当前位置: 首页 > 工具软件 > NLog > 使用案例 >

(翻译)NLog配置文件

白越
2023-12-01

  NLog仅在配置一个或多个目标后才会输出日志,它能通过名为Nlog.config的XML文件配置,本文介绍文件中各项配置。
  NLog中所有能用XML文件配置的内容,都能用代码配置。通过代码配置的简介请查看页面“用代码配置NLog“”。
  请注意,本文中介绍的大部分配置(通过XML或diamante配置或)相关的概念都配以XML示例。

文件位置

  NLog启动时,会在以下各类文件中搜索配置信息,并加载首先发现的配置,同时停止搜索。找不到配置信息则NLog启动失败。
  对于单机程序,NLog会检索以下文件:

  • 标准程序配置文件(文件名一般为程序名称.exe.config);
  • 程序目录下文件名为程序名称.exe.nlog的文件;
  • 程序目录下的NLog.config文件(名称敏感;使用docker dotnet core)[1];
  • NLog.dll所在目录下的NLog.dll.nlog文件(仅当未在全局程序集缓存中部署NLog时)。

  对于ASP.NET程序,NLog会检索以下文件:

  • 标准网络程序配置文件web.config;
  • 与web.config在同一目录下的web.nlog文件;
  • 程序目录下的NLog.config文件(名称敏感;使用docker dotnet core)[1];
  • NLog.dll所在目录下的NLog.dll.nlog文件(仅当未在全局程序集缓存中部署NLog时)。

  请参考显式加载NLog配置(包含与assets相关的详细介绍)。

XML形式NLog配置

  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(规则集)为必填项,其它元素为选填项,用于高级场景。

  • targets(目标集):定义日志输出目标或输出对象;
  • rules(规则集):定义日志路由规则;
  • extensions(扩展程序集):从*.dll 文件中加载NLog扩展程序;
  • include(外部配置):包含外部配置文件;
  • variable(变量):设置配置变量的值。

  最简单的NLog配置仅包含一个target(目标)和一个rule(规则,logger,日志记录器),后者将信息路由到目标之中。

targets

  targets定义日志输出目标,其下的每个target(目标)元素对应一个日志输出目标。每个目标元素包含两个必填属性:

  • name(名称):目标名称;
  • type(类型):目标类型,取值包括File(文件)、Database(数据库)、Mail(邮件)等。如果用户命名空间,本属性的名称应为xsi:type。

  除了上述属性,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.

 类似资料: