介绍
NLog是一款用于.Net
开源免费的日志记录平台,功能强大。本教程旨在让萌新能够快速入门,具体信息请查看https://github.com/NLog/NLog。
安装
- 方式一:使用NuGet搜索并安装
NLog.Config
包 - 方式二:使用程序包管理器控制台:
Install-Package NLog.Config
安装完成后,可以发现NLog
和NLog.Schema
两个包也被安装好了。
配置
- 方式一:使用XML配置
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="Off" internalLogFile="c:\temp\nlog-internal.log">
<!--这里对生成的模版中的样例进行了修改-->
<targets>
<target name="file" xsi:type="AsyncWrapper">
<target xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} ${level:uppercase=true} ${event-properties:item=Action} ${message} ${exception:stacktrace}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
确保该文件的属性为如果较新则复制
或始终复制
。以下为部分参数介绍
targets
:name
:名字,唯一性标识,如果多个target有相同的名字,那么只有最后一个生效。xsi:type
:类型,“xsi”对应于该文件开头定义的xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
,表示XML命名空间AsyncWrapper
:以异步缓冲的方式写入
fileName
:日志文件的全路径basedir
:主程序所在根目录shortdate
:“yyyy-MM-dd”格式的字符串
layout
:日志内容排版,可以理解为模版。longdate
:“yyyy-MM-dd HH:mm:ss.ffff”格式的字符串level
:日志等级,包括Trace、Debug、Info、Warn、Error、Fatal等uppercase
:设置Level的大小写
event-properties
:日志事件属性item
:属性名
message
:自定义的信息exception
:要记录的异常stacktrace
:记录异常中的StackTrace
信息
rules
:name
:记录器名字,这里使用了通配符“*”,下面会用到minlevel
:日志记录的最小等级(Trace<Debug<Info<Warn<Error<Fatal)writeTo
:要使用的Targets名称,多个名称之间用“,”分隔
- 方式二:使用代码进行配置(暂未发现明显优势,不在此进行赘述)
使用
运行下方程序后就可以查看日志了。
using NLog;
class Program
{
//该处创建了一个名为 {你的命名空间}.Program 的 Logger,
//如果 NLog.config 中有同名的 Logger,则使用其配置,
//否则使用 Name 为“*”的 Logger 配置
//如果没有 Name 为“*”的 Logger,则使用记录可用性全为 False 的默认记录器
private static readonly Logger _logger = NLog.LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
//请注意查看以下方法的重载
//由于配置了最小记录等级为Debug,所以Trace不被记录
_logger.Trace("Trace test");
_logger.Debug("Debug test");
_logger.Info("Info test");
_logger.Warn("Warn test");
_logger.Error("Error test");
_logger.Fatal("Fatal test");
}
}
总结
未来有时间会将日志的数据库写入等方式进行补充。
NLog的基本用法差不多就是这些了,不过想要达到应用级别,还需要自己去深入学习下去。