ASP.NET Core: 十二.内置日志、使用Nlog将日志输出到文件(下)

三、注意事项

按照第二节的描述,NLog已经可以正常使用了,有些细节做一下简要说明:


1. 文件nlog.config的这个名字应该是默认读取的文件名(官方建议全部小写,linux系统中要注意),如果用了别的名字,可以在Program.cs文件中通过 ConfigureNLog 方法设置,见下面代码示例。


2. 现在如第一节内置的例子中一样, VS的输出框仍然在输入日志,也就是二者都在生效状态,想只用Nlog,可以调用 logging.ClearProviders();


3. 注意输出目录的权限问题。


代码示例:

 1     public class Program
 2     {
 3         public static void Main(string[] args)
 4         {
 5             NLog.Web.NLogBuilder.ConfigureNLog("nlog1.config");  //假如没有用默认的名字,多写了一个1
 6             CreateWebHostBuilder(args).Build().Run();
 7         }
 8 
 9         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
10             WebHost.CreateDefaultBuilder(args)
11                 .UseStartup<Startup>()
12                 .ConfigureLogging(logging =>
13                 {
14                     logging.ClearProviders(); //移除已经注册的其他日志处理程序
15                     logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); //设置最小的日志级别
16                 })
17                 .UseNLog();  
18     }

四、NLog配置简要说明

    “简要”的说一下NLog的配置:

1.上文提到了一个日志级别,这个级别大概分为6个,由低到高如下:

1 logger.LogTrace();
2 logger.LogDebug();
3 logger.LogInformation();
4 logger.LogWarning();
5 logger.LogError();
6 logger.LogCritical();

2. 通过上面的例子,看输出的日志文件有3个, 这是在nlog.config中配置的, 通过文件名可以找到对应的配置。


 internal-nlog 记录了NLog的启动及加载config的信息。

 nlog-all 记录了所有日志

nlog-own 记录了我们自定义的日志

这是为什么呢?config中有两个关键标签<targets>和 <rules>


<targets>   用于配置输出相关内容,比如 type 属性可选项为File、Mail、Console等,用于设置输出目标,layout属性用于设置输出信息的组成元素及格式。

<rules> : 这里有个坑,一看这个标签,简单理解成了“规则”,而恰好例子中的两个<rule>正好对应了上面的两个<target>,writeTo属性指定了对应的<target>。可仔细一看,两个的<rule>配置差不多,为什么下面的一个就只输出了我们自定义的log呢?看帮助才知道这是一个“路由表”,日志是从上到下匹配的。 <logger name="Microsoft.*" maxlevel="Info" final="true" /> 一句话的 final="true" 过滤掉了"Microsoft.*"的日志。


上一篇:Mysql数据库备份和还原常用的命令


下一篇:kettle使用log4j管理输出日志