NLog仅在配置一个或多个目标后才会输出日志,它能通过名为Nlog.config的XML文件配置,本文介绍文件中各项配置。
NLog中所有能用XML文件配置的内容,都能用代码配置。通过代码配置的简介请查看页面“用代码配置NLog“”。
请注意,本文中介绍的大部分配置(通过XML或diamante配置或)相关的概念都配以XML示例。
NLog启动时,会在以下各类文件中搜索配置信息,并加载首先发现的配置,同时停止搜索。找不到配置信息则NLog启动失败。
对于单机程序,NLog会检索以下文件:
对于ASP.NET程序,NLog会检索以下文件:
请参考显式加载NLog配置(包含与assets相关的详细介绍)。
XML形式的NLog配置,要么嵌入到Visual Studio项目配置文件内(pp.config或web.config),要么保存为单独的XML文件(记得要在VS中将文件属性设置为Copy If newer)。
单独的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">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
要是在app.config或web.config中内嵌NLog配置,则在configSections元素下增加名为nlog的section元素,同时添加nlog元素。示例如下:
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
...
<nlog>
<targets>
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
</rules>
</nlog>
</configuration>
可根据需要采用XML命名空间,在Visual Studio中编辑XML信息支持智能提示。
XML形式的NLog配置,使用命名空间时会区分节点和属性的大小写,而不使用命名空间时则不区分。
以下元素可以作为nlog元素的子元素,其中targets(目标集)和rules(规则集)为必填项,其它元素为选填项,用于高级场景。
最简单的NLog配置仅包含一个target(目标)和一个rule(规则,logger,日志记录器),后者将信息路由到目标之中。
targets定义日志输出目标,其下的每个target(目标)元素对应一个日志输出目标。每个目标元素包含两个必填属性:
除了上述属性,target元素还接受其它参数,这会影响诊断跟踪的编写方式。每类目标都有一组不同的参数,它们在NLog的项目主页上详细描述,并且它们与上下文相关。在Visual Studio中编辑这些参数时支持智能提示。[2]
例如,类型为File的target会接受fileName(文件名称)参数,该参数定义保存日志文件的文件名称;类型为Console的target会接受error参数,该参数定义诊断跟踪写入进程的标准错误输出(stderr),还是写入进程的标准输出(stdout)。
下列示例展示了targets元素下定义的不同target:两个File,一个Network和一个OutputDebugString。
<targets>
<target name="f1" xsi:type="File" fileName="file1.txt"/>
<target name="f2" xsi:type="File" fileName="file2.txt"/>
<target name="n1" xsi:type="Network" address="tcp://localhost:4001"/>
<target name="ds" xsi:type="OutputDebugString"/>
</targets>
NLog提供了很多预定义target类型,还可以方便地创建自定义target,详见如何创建自定义target。
未完待续…。
原文地址:https://github.com/NLog/NLog/wiki/Configuration-file
[1]原文:NLog.config in application’s directory (Name sensitive; using docker dotnet core)
[2]原文:In addition to these attributes, targets usually accept other parameters, which impact the way diagnostic traces are written. Each target has a different set of parameters, they are described in detail on project’s homepage and they are context-sensitive. Intellisense is also available in Visual Studio.