The NLog LogFactory has support for fluent setup of the initial NLog configuration.
SetupLogFactory
- LogFactory specific options. Introduced with NLog 5.0SetupInternalLogger
- InternalLogger specific options. Introduced with NLog 4.7SetupExtensions
- Registration of NLog extensions before loading configuration. Introduced with NLog 4.7SetupSerialization
- Override default log output for specific object types. Introduced with NLog 4.7LoadConfigurationFromFile
- Explicit load NLog config from xml file. Introduced with NLog 4.7LoadConfigurationFromXml
- Explicit load NLog config from xml content. Introduced with NLog 4.7LoadConfiguration
- Explicit build/adjust NLog config. Introduced with NLog 4.7 but heavily improved with NLog 5.0Build 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(new MyCustomTarget() { 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 requires NLog.Web.AspNetCore:
var logger = LogManager.Setup() .LoadConfigurationFromAppSettings() .GetCurrentClassLogger();
See also NLog configuration with appsettings.json
Example with LoadConfigurationFromSectionLoads NLog config from Microsoft Configuration Section, and requires NLog.Extensions.Logging:
var config = new ConfigurationBuilder() .SetBasePath(basePath ?? Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{environment}.json", optional: true) .AddEnvironmentVariables().Build(); var logger = LogManager.Setup() .LoadConfigurationFromSection(config) .GetCurrentClassLogger();
See also NLog configuration with appsettings.json
Example with LoadConfigurationFromFileEnsure 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):
var fileXmlContent = 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 for System.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 for ReadOnlyMemory<byte>
:
NLog.LogManager.Setup().SetupSerialization(s => s.RegisterObjectTransformation<ReadOnlyMemory<byte>>(obj => obj.Length) );
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4