NLog is a free logging platform for .NET with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.git
It can process diagnostic messages emitted from any .NET language, augment them with contextual information, format them according to your preference and send them to one or more targets such as file or database.github
NLog在GitHub的官网:https://github.com/NLogweb
NLog for .NET Core:https://github.com/NLog/NLog.Extensions.Loggingjson
使用CLI(Command Line Interface)建立一个example程序:app
这些命令行的具体意思这里就再也不赘述。less
主要是新增了NLog相关的配置:ui
在程序的根目录下新增NLog的配置文件:nlog.configspa
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Warn" internalLogFile="internal-nlog.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="File" name="ownFile-web" fileName="nlog-own-${shortdate}.log" layout="${longdate}|${threadid}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<logger name="*" minlevel="Info" writeTo="ownFile-web" />
</rules>
</nlog>
1 using Microsoft.AspNetCore.Builder; 2 using Microsoft.AspNetCore.Hosting; 3 using Microsoft.AspNetCore.Http; 4 using Microsoft.Extensions.Logging; 5 using NLog.Extensions.Logging; 6
7 namespace ConsoleApplication 8 { 9 public class Startup 10 { 11 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 12 { 13 // Add NLog to ASP.NET Core
14 loggerFactory.AddNLog(); 15
16 // configure nlog.config in your project root
17 env.ConfigureNLog("nlog.config"); 18
19 app.Run(context =>
20 { 21 return context.Response.WriteAsync("Hello World!!"); 22 }); 23 } 24 } 25 }
1 using System.Threading; 2 using Microsoft.AspNetCore.Hosting; 3 using NLog; 4
5 namespace ConsoleApplication 6 { 7 public class Program 8 { 9 private static Logger logger = LogManager.GetCurrentClassLogger(); 10 public static void Main(string[] args) 11 { 12 logger.Info("Server is running..."); 13 logger.Info(string.Format("Current Thead Id:{0}", Thread.CurrentThread.ManagedThreadId)); 14 var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build(); 15 host.Run(); 16 } 17 } 18 }
运行程序后会在主目录下生成2个日志文件:命令行