GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Fluent Configuration API Fluent Configuration API
Rolf Kristensen edited this page
The NLog Fluent Configuration API allows you to configure NLog directly in C# instead of XML.
The NLog LogFactory has support for fluent setup of the initial NLog configuration:
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(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(); }); 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") ); Override the default object reflection for 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 NLog.LogManager.Setup().SetupSerialization(s => s.RegisterObjectTransformation<ReadOnlyMemory<byte>>(obj => obj.Length) ); 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) ); 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)) ); 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 Loads 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 Ensure NLog config has been loaded, and fail with exception when not: NLog.LogManager.Setup().LoadConfigurationFromFile(optional: false); Load NLog config from custom location (like assembly resource): var fileXmlContent = File.ReadAllText(xmlFilePath); NLog.LogManager.Setup().LoadConfigurationFromXml(fileXmlContent); - Troubleshooting Guide - See available NLog Targets and Layouts: https://nlog-project.org/config
Clone this wiki locally |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |