首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用不同配置的NLog记录器

使用不同配置的NLog记录器
EN

Stack Overflow用户
提问于 2011-07-17 21:42:09
回答 2查看 18.1K关注 0票数 20

在NLog中可以创建具有不同配置的多个记录器吗?

我有一个组件,每次实例化都必须将所有事件记录到与新实例相关的不同文件中。

使用NLog可以做到这一点吗?如果不是,有日志框架可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-19 05:16:54

是的,你可以这样做。您可以将该类型的记录器配置为记录到特定目标。或者,您可以将该类型的记录器配置为记录到目标(如文件),并根据记录器名称(自动)命名文件。

有关示例,请参阅NLog config file documentation here

此外,请参阅我的post here以获取一些配置文件提示。

下面是一个非常简短的示例,说明如何配置两个记录器:一个用于将特定类型记录到以该类型命名的输出文件,另一个用于所有其他记录器,用于根据日期记录到文件。

代码语言:javascript
复制
<nlog>
  <targets> 
    <target name="f1" xsi:type="File" fileName="${logger}.txt" />
    <target name="f2" xsi:type="File" fileName="${shortdate}.txt" />
  </targets>
  <rules>
    <logger name="Name.Space.Class1" minlevel="Trace" writeTo="f1" />  
    <logger name="*" levels="Debug" writeTo="f2" />
  </rules>
</nlog>

如果您希望Name.Space.Class1类型的日志转到“特殊”文件(即,其名称由记录器确定的文件),则可以将"final“添加到记录器规范中,如下所示:

代码语言:javascript
复制
<logger name="Name.Space.Class1" minlevel="Trace"final="true" />
票数 23
EN

Stack Overflow用户

发布于 2018-06-20 20:46:58

我的NLog.config完整示例

代码语言:javascript
复制
<?xml version="1.0"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="false" internalLogFile="\\YOURSERVNAME\Logs\nlog-internal.log" internalLogLevel="Warn">
  <variable name="basedir" value="${basedir}/Logs"></variable>
  <targets>
    <default-target-parameters xsi:type="File" fileName="${var:basedir}/Trace.csv" archiveFileName="${var:basedir}/Archives/Trace/Trace.{##}.csv" archiveNumbering="DateAndSequence" archiveDateFormat="yyyy-MM-dd" archiveEvery="Month" maxArchiveFiles="15" archiveAboveSize="10485760" keepFileOpen="false"/>
    <default-wrapper xsi:type="BufferingWrapper" bufferSize="500" flushTimeout="10000" />
    <target name="TraceLog" xsi:type="File">
      <layout xsi:type="CsvLayout" delimiter="Semicolon">
        <column name="Time" layout="${longdate}" />
        <column name="Callsite" layout="${callsite}" />
        <column name="Level" layout="${level}" />
        <column name="User" layout="${Identity}" />
        <column name="Message" layout="${message}" />
      </layout>
    </target>
    <target name="ErrorLog" xsi:type="File" fileName="${var:basedir}/Errors.csv"  archiveFileName="${var:basedir}/Archives/Errors/Errors.{##}.csv" maxArchiveFiles="10">
      <layout xsi:type="CsvLayout" delimiter="Semicolon">
        <column name="Time" layout="${longdate}" />
        <column name="Callsite" layout="${callsite}" />
        <column name="Level" layout="${level}" />
        <column name="User" layout="${Identity}" />
        <column name="Message" layout="${message}" />
      </layout>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="TraceLog" />
    <logger name="*" minlevel="Error" writeTo="ErrorLog" />
  </rules>
</nlog>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6724212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档