nag async info 插件 sta pack hmm erro 完整
本文介绍 c# 的日志插件 NLog
安装插件 创建 logger 日志级别 书写日志信息 配置 包装器 布局
安装插件
直接下载插件包Install - Package NLog.Config
创建 logger
使用LogManager创建Logger实例,最好一个类里面一个Logger实例
写法一
这种写法,记录的日志文件,显示的logger名字,是命名空间加上logger所在类的类名,如 ConsoleApp1.Program
private static Logger mylogger = LogManager.GetCurrentClassLogger();
写法二
这种写法,可以手动设置日志文件中的logger名字
Logger mylogger = LogManager.GetLogger("myTest");
日志级别
级别由低到高
Trace 记录完整的信息,一般只用在开发环境
Debug 记录调试信息,没有Trace信息完整,一般也只用在开发环境
Info 简单的信息,一般用在生产环境
Warn 记录警告信息,一些可以解决的小问题
Error 记录报错信息,一般都是Exceptions信息
Fatal 非常严重的错误信息
书写日志信息
或者使用
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message");
logger.Log(LogLevel.Info, "Sample informational message");
支持格式化 mylogger.Fatal("Sample {0} error message", "fetal");
尽量使用NLog内置的格式化工具,NLog做了优化工作
配置
最基础的配置
第一步,打开NLog.config配置文件,添加如下配置
1.这里logger自己还有一个name,这个name对应类名,也就是说什么样的类名可以输出日志,如ConsoleApp1.Program
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" /> // 创建一个target,代表输出日志文件的配置
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" /> // 设置Info级别以上的日志,才能够输入到什么名为logfile的target当中
/*
2.可以添加final="true"属性,表示后面的所有针对此指定名字的logger都无效
第二步,运行代码即可
* /
</rules >
多target配置
包装器
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="console" xsi:type="Console" /> // 创建一个target表示用控制台输出日志信息
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="console" /> // 将Info级别以上的配置信息输出到名为console的target中
</rules>
异步包装器配置
还有很多包装器,按需自查
<targets>
<target name="asyncFile" xsi:type="AsyncWrapper">
<target name="logfile" xsi:type="File" fileName="file.txt" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="asyncFile" />
</rules>
布局
布局是用来格式化日志输出信息的
simple日志格式化
<target name="logfile" xsi:type="File" fileName="file.txt" layout="${date:format=yyyyMMddHHmmss} ${message} ${counter:increment=3:sequence=Layout:value=5}"/>
还有很多格式化写法,自行查阅
子类继承 log
public class Demo1 {
protected Logger Log {
get;
set;
}
protected Demo1() {
Log = LogManager.GetLogger(GetType().FullName);
}
}
public class Demo2: Demo1 {
public Demo2() : base() {}
}
c#的日志插件NLog基本使用
来源: http://www.bubuko.com/infodetail-2458175.html