NLog 配置文件是一个以 nlog 为根节点的 XML 文件。nlog 节点可以添加命名空间,以开启 Visual Studio 的 Intellisense 功能。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </nlog>
以下元素可以作为 nlog 节点的子节点,前两种元素在所有 NLog 配置文件中都必须存在,剩余元素是可选的。
在 nlog 节点中设置属性autoReload="true",NLog 会监视配置文件,并在配置文件发生更改时自动重新载入配置文件而不需要重启应用程序。该功能支持通过 include 包含的子配置文件。示例如下,
<nlog autoReload="true"> ... </nlog>
targets 节点中定义了一系列日志输出目标,每一个输出目标是一个 target 元素。对于每一个 target 元素,name 属性和 type 属性是必须要指定的:
不同类型的 target 节点可以接受不同的属性。例如对于 File 目标,fileName 参数指定了日志文件的文件名;对于 Console 目标,error 参数指定日志信息是写到标准错误流还是标准输出流。NLog 内置了许多预定义类型,也可以自定义输出目标类型,详见如何自定义输出目标。
以下是 targets 节点的例子:
<targets>
<target name="f1" xsi:type="File" fileName="file1${shortdate}.txt" archiveAboveSize="10000" maxArchiveFiles="3" />
<target name="f2" xsi:type="File" fileName="file2${shortdate}.txt" archiveAboveSize="10000" maxArchiveFiles="3" />
<target name="n1" xsi:type="Network" address="tcp://localhost:4001"/>
<target name="ds" xsi:type="OutputDebugString"/>
</targets>
archiveAboveSize 代表日志文本文件的最大字节数,当前设定的为 10KBmaxArchiveFiles 代表存储的日志文件最大个数,设置后可以避免日志文件无限量增加,导致磁盘空间不够
rules 节点是日志路由规则的集合,由一个或多个 logger 元素组成。每个 logger 元素记录了 logger 的名字、目标输出以及要处理的日志等级。NLog 从路由规则表的第一个 logger 开始处理,如果当前 logger 有效,则日志信息将被输出到指定的 target。如果某个 logger 被标记为 final ,那么其后的 logger 都会被忽略。
logger 包含下列属性:
如果在一条规则中定义了多个日志等级相关的属性(level, levels, minLevel 和 maxLevel),按照优先级只生效当前优先级最高的属性。等级相关属性优先级如下,
以下是 rules 节点的例子:
<rules>
<logger name="Name.Space.Class1" minlevel="Debug" writeTo="f1" />
<logger name="Name.Space.Class1" levels="Debug,Error" writeTo="f1" />
<logger name="Name.Space.*" writeTo="f3,f4" />
<logger name="Name.Space.*" minlevel="Debug" maxlevel="Error" final="true" />
</rules>
final="true" 是指一旦匹配到该规则,则不继续往下匹配,相当于for循环中的break
name ="*" 是指所有日志都会被匹配, name 中可以指定固定的命名空间,也可以指定具有模糊匹配的命名空间
命名空间 Name.Space 下类 Class1 中高于 Debug 级别的日志信息将被写入输出目标 f1
命名空间Name.Space 下类 Class1 中级别为 Debug 和 Error 的日志信息将被写入 target:f1
命名空间 Name.Space 下所有类中的日志信息将被写入 target:f3, f4
命名空间 Name.Space 下所有类中级别在Debug 和 Error 之间 (Debug,Info,Warn 和 Error) 的日志信息不被记录(因为没有指定属性writeTo)。由于标记了属性 final,之后的 logger 都会被忽略。
extensions 节点可以添加额外的NLog元包或自定义功能,语法为 。assembly 属性指定的被包含程序集,配置时不用带后缀 .dll 。示例如下,
<nlog>
<extensions>
<add assembly="MyAssembly" />
</extensions>
<targets>
<target name="a1" type="MyFirst" host="localhost" />
</targets>
<rules>
<logger name="*" minLevel="Info" appendTo="a1" />
</rules>
</nlog>
NLog 4.0 之后,与 NLog.dll 同目录下名如 NLog*.dll 的程序集(如 NLog.CustomTarget.dll)会被自动加载。
include 节点指定当前配置文件包含多个子配置文件,语法为 。通过 ${} 语法可以使用环境变量,下例展示包含一个名为当前机器名的配置文件。
<nlog> ... <include file="${machinename}.config" /> ... </nlog>
variable 元素定义了配置文件中需要用到的变量,一般用来表示复杂或者重复的表达式(例如文件名)。变量需要先定义后使用,否则配置文件将初始化失败。定义变量的语法如下:
<variable name="var" value="xxx" />
定义变量之后,可以通过 ${var} 语法来使用:
<nlog>
<variable name="logDirectory" value="logs/${shortdate}" />
<targets>
<target name="file1" xsi:type="File" fileName="${logDirectory}/file1.txt" />
<target name="file2" xsi:type="File" fileName="${logDirectory}/file2.txt" />
</targets>
</nlog>
本文链接:https://blog.nnwk.net/article/147
有问题请留言。版权所有,转载请在显眼位置处保留文章出处,并留下原文连接
Leave your question and I'll get back to you as soon as I see it. All rights reserved. Please keep the source and links
友情链接:
子卿全栈
全部评论