快速使用NLog
简单地介绍
NLog是.NET的日志框架,具有丰富的日志路由和管理功能,方便我们生成、管理日志。NLog支持结构化日志、多个日志目标以及现代日志框架。
Step1 创建项目
Step2 安装依赖
Install-Package NLog.Extensions.Logging
P.S : 也可以通过管理NuGet程序包进行添加
Step3 创建Logger
在Program.cs文件中添加代码
//创建logger
private static Logger logger = LogManager.GetCurrentClassLogger();
在大部分的情况下,每个类都共用一个Logger,就像每个类创建Logger的时候都都用了相同的名称。 LogManager提供了一个方法为当前类创建Logger,叫做 GetCurrentClassLogger()。 因为 loggers是线程安全的,你能够非常容易的创建一个Logger,然后把他存放在一个静态变量中
NLog的6个日志级别
序号 | 级别 | 说明 |
---|---|---|
1 | Fatal | 最严重,程序终止了 |
2 | Error | 错误的,记录程序执行过程中发生的问题 |
3 | Warn | 警告 |
4 | Info | 信息,我常用于生产环境,记录一下定时任务的运行情况 |
5 | Debug | 用于调试 |
6 | Trace | 用于跟踪代码 |
Step4 配置NLog
添加应用程序配置文件,并命名为nlog.config
然后将nlog.config属性中的“复制到输出目录”改为“始终复制”
下面是我的nlog.config配置文件
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Warn"
internalLogFile="Logs/nlog-internal.log">
<targets>
<!-- write logs to file -->
<!--输出目标:[xsi:type]输出类型文件, [name]名称,这里我取名为info,[fileName]输出到程序根目录logs文件夹中, 以日期作为生成log文件名称, [layout]生成内容的格式
-->
<!-- write logs to the files -->
<target xsi:type="File" name="trace" fileName="${basedir}/Logs/Trace_${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${message}" />
<target xsi:type="File" name="debug" fileName="${basedir}/Logs/Debug_${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${message}" />
<target xsi:type="File" name="info" fileName="${basedir}/Logs/Info/${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${message}" />
<!-- write logs to the console-->
<target xsi:type="Console" name="logconsole" />
</targets>
<rules>
<!-- 日志路由规则:最低级别info,输出到target目标 JiShangInformationExport -->
<!-- 由低到高 trace,debug,info,warn,error,fatal -->
<!-- -->
<logger name="*" level="trace" writeTo="trace" />
<logger name="*" level="debug" writeTo="debug" />
<logger name="*" level="info" writeTo="info" />
</rules>
</nlog>
下面是配置文件中一些元素的说明
nlog根节点下面有如下的子元素:
- targets 定义日志 targets/outputs
- rules 定义日志路由规则
- extensions 从*.dll文件中加载日志扩展
- include 引入其他的外部配置
- variable 设置配置变量的值
targets
每个targets必须包含name和type特性,name是target的名称,type是target类型 (这里好像说了什么,又好像什么都没说)
rules
rules输出方式(targets)的关联。规则会从列表的第一条开始匹配。当一个规则匹配,日志信息会通过该规则关联的targer输出。如果该规则定义了final标记,那么,就不会继续匹配下面的规则。
每一条路由都是一个logger元素, 具有下面的特性,各种规则配置在logger子标签里。
- name - 记录者的名字
- minlevel - 最低级别
- maxlevel - 最高级别
- level - 单一日志级别
- levels - 一系列日志级别,由逗号分隔
- writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔
Step5 调用
程序运行完后查看文件,Logs文件夹
info日志
debug日志
trace日志
参考
[1]https://nlog-project.org/documentation/v5.0.0/html/R_Project_NLog.htm
[3]https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/