Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/NLogPublic

Fluent Configuration API

Rolf Kristensen edited this pageAug 22, 2024 ·11 revisions

The NLog LogFactory has support for fluent setup of the initial NLog configuration.

  • SetupLogFactory - LogFactory specific options. Introduced with NLog 5.0
  • SetupInternalLogger - InternalLogger specific options. Introduced with NLog 4.7
  • SetupExtensions - Registration of NLog extensions before loading configuration. Introduced with NLog 4.7
  • SetupSerialization - Override default log output for specific object types. Introduced with NLog 4.7
  • LoadConfigurationFromFile - Explicit load NLog config from xml file. Introduced with NLog 4.7
  • LoadConfigurationFromXml - Explicit load NLog config from xml content. Introduced with NLog 4.7
  • LoadConfiguration - Explicit build/adjust NLog config. Introduced with NLog 4.7 but heavily improved with NLog 5.0

Example with LoadConfiguration

Build NLog config that writes everything to console:

NLog.LogManager.Setup().LoadConfiguration(builder=>{builder.ForLogger().WriteToConsole()});

Build NLog config that writes to file and console:

NLog.LogManager.Setup().LoadConfiguration(builder=>{builder.ForLogger().FilterMinLevel(LogLevel.Info).WriteToConsole();builder.ForLogger().FilterMinLevel(LogLevel.Debug).WriteToFile(fileName:"App_${shortdate}.txt");});

Build NLog config that writes to custom target::

NLog.LogManager.Setup().LoadConfiguration(builder=>{builder.ForLogger().FilterMinLevel(LogLevel.Info).WriteTo(newMyCustomTarget(){Layout="${message}"});});

Build NLog config that restricts output from noisy logger:

NLog.LogManager.Setup().LoadConfiguration(builder=>{builder.ForLogger("Microsoft.*").WriteToNil(finalMinLevel:LogLevel.Warn);builder.ForLogger().FilterMinLevel(LogLevel.Info).WriteToConsole();});

Example with LoadConfigurationFromAppSettings

Loads NLog config from appsettings.json (with fallback to NLog.confg) and requiresNLog.Web.AspNetCore:

varlogger=LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();

See alsoNLog configuration with appsettings.json

Example with LoadConfigurationFromSection

Loads NLog config from Microsoft Configuration Section, and requiresNLog.Extensions.Logging:

varconfig=newConfigurationBuilder().SetBasePath(basePath??Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json",optional:false,reloadOnChange:true).AddJsonFile($"appsettings.{environment}.json",optional:true).AddEnvironmentVariables().Build();varlogger=LogManager.Setup().LoadConfigurationFromSection(config).GetCurrentClassLogger();

See alsoNLog configuration with appsettings.json

Example with LoadConfigurationFromFile

Ensure NLog config has been loaded, and fail with exception when not:

NLog.LogManager.Setup().LoadConfigurationFromFile(optional:false);

Example with LoadConfigurationFromXml

Load NLog config from custom location (like assembly resource):

varfileXmlContent=File.ReadAllText(xmlFilePath);NLog.LogManager.Setup().LoadConfigurationFromXml(fileXmlContent);

Example with SetupExtensions

To register a custom LayoutRenderer:

NLog.LogManager.Setup().SetupExtensions(ext=>ext.RegisterLayoutRenderer("trace_id",(logevent)=>CorrelationIdentifier.TraceId.ToString()));

To register a custom Target:

NLog.LogManager.Setup().SetupExtensions(ext=>ext.RegisterTarget<MyNamespace.MyFirstTarget>("MyFirst"));

Examples with SetupLogFactory

Explicit configure the global NLog TimeSource:

NLog.LogManager.Setup().SetupLogFactory(fac=>fac.SetTimeSourcAccurateUtc());

Explicit activate exceptions on configuration errors:

NLog.LogManager.Setup().SetupLogFactory(fac=>fac.SetThrowConfigExceptions(true));

Explicit configure the global LogLevel threshold:

NLog.LogManager.Setup().SetupLogFactory(fac=>fac.SetGlobalThreshold(LogLevel.Info));

Example with SetupInternalLogger

Write internal warnings and errors to console output:

NLog.LogManager.Setup().SetupExtensions(intern=>intern.SetMinimumLogLevel(LogLevel.Warn).LogToConsole(true));

Register event handler to be called on warnings and errors:

NLog.LogManager.Setup().SetupExtensions(intern=>intern.SetMinimumLogLevel(LogLevel.Warn).AddLogSubscription((sender,evt)=>ReportEvent(evt.Message)));

Example with SetupSerialization

Override the default object reflection forSystem.Net.WebException:

NLog.LogManager.Setup().SetupSerialization(s=>s.RegisterObjectTransformation<System.Net.WebException>(ex=>new{Type=ex.GetType().ToString(),Message=ex.Message,StackTrace=ex.StackTrace,Source=ex.Source,InnerException=ex.InnerException,Status=ex.Status,Response=ex.Response.ToString(),// Call your custom method to render stream as string}));

Skip default object reflection forReadOnlyMemory<byte>:

NLog.LogManager.Setup().SetupSerialization(s=>s.RegisterObjectTransformation<ReadOnlyMemory<byte>>(obj=>obj.Length));

-Troubleshooting Guide - See available NLog Targets and Layouts:https://nlog-project.org/config

Configuration

Programmatic Configuration

Advanced

Extending NLog

Clone this wiki locally

[8]ページ先頭

©2009-2025 Movatter.jp