-
Notifications
You must be signed in to change notification settings - Fork 0
Gdc layout renderer
Global Diagnostics Context - a dictionary structure to hold per-application-instance values.
Use the Global Diagnostics Context when you want to make certain information available to every logger in the current process.
The global context is one of the context.
- When you need the context for all threads, use the GDC.
- When you need the context for one threads, use the MDC.
- When you work with async, use the MDLC
- If the context is different for every message, use the Log event properties.
As of NLog 4.1, the Global Diagnostics Context supports any Object
type, not just String
.
Supported in .NET, Silverlight, Compact Framework and Mono.
##Configuration Syntax
${gdc:item=String}
##Parameters ###Rendering Options
- item - Name of the item. Required.
##Example ###Simple Properties The following example demonstrates the basic usage of the Global Diagnostics Context.
GlobalDiagnosticsContext.Set("myDataBase","someValue");
GlobalDiagnosticsContext.Set("informationGroup", new { One = 1, Two = 2 });
GlobalDiagnosticsContext.Set("anyObject", anyObjectReferenceOrString);
Add the following to your logger configuration to reference the above properties:
${gdc:item=myDatabase}
${gdc:item=informationGroup}
${gdc:item=anyObject}
###Dynamic Properties In some instances you may have thread-local information that you want to make available to all logger instances in the current process. This can be achieved with the Mapped Diagnostics Context, but requires that your create the property within the context of every thread that may reference it. Using Dynamic Properties and the Global Diagnostics Context, you can achieve the same result while only creating the property once.
public class ManagedThreadIdProperty
{
public static readonly ManagedThreadIdProperty Default = new ManagedThreadIdProperty();
private ManagedThreadIdProperty ()
{
}
public override string ToString ()
{
return System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();
}
}
During initialization, add the following code:
GlobalDiagnosticsContext.Set("ManagedThreadId", ManagedThreadIdProperty.Default);
To reference the ManagedThreadId Global Diagnostics Context property.
${gdc:item=ManagedThreadId}
##Notes
When rendering context items, the item is passed to String.Format
along with the current configuration's DefaultCultureInfo
value.
- Search in documentation
- Getting started
- Examples
- External articles and tutorials
- FAQ
- Platform support
- Advanced Configuration file options
- Filtering log messages
- [Using Time Sources](Time Source)
- Visual Studio support
- Who is using NLog
- [Write custom extensions](Extending NLog)