NDC Class | Apache log4net™ SDK Documentation

Implementation of Nested Diagnostic Contexts.
Inheritance Hierarchy

System
Object
log4net
NDC

Namespace: log4net
Assembly: log4net (in log4net.dll) Version: 2.0.8.0-.NET 4.0
Syntax

C#
VB
C++
F#
Copy

    public sealed class NDC

    Public NotInheritable Class NDC

    public ref class NDC sealed

    [<SealedAttribute>]
    type NDC =  class end

The NDC type exposes the following members.

Properties

| Name | Description
--- | --- | ---
| Depth | Gets the current context depth.

Top
Methods

| Name | Description
--- | --- | ---
| Clear | Clears all the contextual information held on the current thread.
| CloneStack | Creates a clone of the stack of context information.
| Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
| GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.)
| GetType | Gets the Type of the current instance. (Inherited from Object.)
| Inherit | Inherits the contextual information from another thread.
| Pop | Removes the top context from the stack.
| Push | Pushes a new context message.
| PushFormat | Pushes a new context message.
| Remove | Removes the context information for this thread. It is not required to call this method.
| SetMaxDepth | Forces the stack depth to be at most maxDepth.
| ToString | Returns a String that represents the current Object. (Inherited from Object.)

Top
Remarks

Note
The NDC is deprecated and has been replaced by the Stacks. The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].

A Nested Diagnostic Context, or NDC in short, is an instrument to distinguish interleaved log output from different sources. Log output is typically interleaved when a server handles multiple clients near-simultaneously.

Interleaved log output can still be meaningful if each log entry from different contexts had a distinctive stamp. This is where NDCs come into play.

Note that NDCs are managed on a per thread basis. The NDC class is made up of static methods that operate on the context of the calling thread.

Examples

How to push a message into the context
C#
Copy

    using(NDC.Push("my context message"))
    {
        ... all log calls will have 'my context message' included ...

    } // at the end of the using block the message is automatically removed

Thread Safety

Static members of this type are safe for multi-threaded operations. Instance members of this type are safe for multi-threaded operations.
See Also

#### Reference

log4net Namespace