官方网址:https://nlog-project.org/
中文文档:https://www.cnblogs.com/animal/p/4062813.html
简单说
NLog是适用于各种.NET平台的免费日志记录平台。NLog可写入数据库,文件,控制台,并可即时更改日志记录配置。日志的配置可通过修改配置文件和修改代码,修改配置文件后不必重启应用程序。
NLog可写入的目标类型:
-
文件:通过自动文件命名和归档将日志写入任意数量的文件。 默认情况下,NLog不会锁定文件
-
事件日志:可写入本地或远程
-
数据库
-
控制台:实时写入命令行控制台,包括消息的颜色编码
-
E-mail
模板
1.以下target模板,适用于简单要求场景:保存7天的日志信息,当前日志名为logs_current.txt,过往日志名为logs_archive{1-7}.txt
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${threadid} ${message} ${exception:format=tostring}"
fileName="${basedir}/logs/logs_current.txt"
archiveFileName="${basedir}/logs/logs_archive.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="7"
concurrentWrites="true"
keepFileOpen="false"
encoding="iso-8859-2" />
2.以下target模板:在日志信息中显示方法名称,只保存40天的日志,当前日志为logs_current.txt, 过往日志为logs_archive{Date}.zip。
<targets>
<target xsi:type="AsyncWrapper"
name=" fileInfo"
timeToSleepBetweenBatches="0"
queueLimit="1000000"
batchSize="1000"
overflowAction="Block">
<target name="file" xsi:type="File"
layout="${longdate} ${logger}.${callsite:className=False:fileName=False:includeSourcePath=False:methodName=True:cleanNamesOfAnonymousDelegates=True} ${threadid} ${message} ${exception:format=tostring}"
fileName="${basedir}/logs/logs_current.txt"
archiveFileName="${basedir}/logs/logs_archive.{#}.zip"
archiveEvery="Day"
archiveNumbering="Date"
maxArchiveFiles="40"
enableArchiveFileCompression="true"
concurrentWrites="true"
keepFileOpen="true"
encoding="iso-8859-2" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Info" maxlevel="Info" writeTo="fileInfo" />
</rules>
代码的调用
实例化:
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
写入日志:
logger.Info("Start");
logger.Error(e);
Note:
xsi:type="AsyncWrapper":异步写入日志
timeToSleepBetweenBatche 设置批次之间休眠的时间,设置为0或1则是只有在写入日志时,才触发计时器
queueLimit - 缓存队列的大小。默认1000
batchSize - 一个批次处理的事件数量。默认:100 (NLog 4.4.2和更高版本的默认值:200)
overflowAction - 当缓冲区溢出时的行为。默认:Discard
- Block - 阻止写入直到缓冲区有空间
- Discard - 抛弃溢出的数据.
- Grow - 增大缓冲区
keepFileOpen-设置是否保持日志文件打开,而不是在每次记录事件时打开和关闭它。 将此属性更改为true可以大大提高性能。
文件配置的详细信息,可参考官方文档:
https://github.com/NLog/NLog/wiki/File-target