65.9K
CodeProject 正在变化。 阅读更多。
Home

从一个应用程序中使用多个 log4net 输出

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.82/5 (13投票s)

2007年5月9日

CPOL

1分钟阅读

viewsIcon

145086

downloadIcon

3507

通过使用本文,您可以轻松地从 log4net 配置多个输出日志文件

引言

本文只是演示如何根据库或应用程序使用多个输出日志文件。

Using the Code

开发类库的开发人员可能需要将详细信息与主应用程序分开记录,以支持用户或快速检索数据。 但是,当他们尝试实现这一点时,他们会遇到一个问题。 这是因为通常 log4net 在 ASP.NET *web.config* 文件或 Windows 应用程序 *app.config* 文件下只有一个 config 部分。 要克服此问题,您可以使用定义输出的不同记录器条目。

默认情况

<log4net>
    <appender type="log4net.Appender.RollingFileAppender" name="RollingFile">
        <file value="c:\\logs\\Log.txt" />
        <layout type="log4net.Layout.PatternLayout" />
            <conversionpattern value="%d [%t] %-5p %c - %m%n" />
        </layout>
    </appender>

    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>

当您指定 <root /> 标签时,它表示所有日志数据都将记录到该输出文件。 要停止此操作,我们需要删除 <root /> 元素,并为每个库或应用程序使用单独的 <logger /> 标签。 您还需要为库指定您的 root namespace

<log4net>
    <appender type="log4net.Appender.RollingFileAppender" name="classApp1">
      <file value="c:\\Library1.txt" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionpattern value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>

    <appender type="log4net.Appender.RollingFileAppender" name="classApp2">
      <file value="c:\\Library2.txt" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionpattern value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>

    <appender type="log4net.Appender.RollingFileAppender" name="application">
      <file value="c:\\Application.txt" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionpattern value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>

    <logger name="ClassLibrary1">
      <level value="ERROR" />
      <maximumfilesize value="256KB" />
      <param value="ERROR" name="Threshold" />

      <appender-ref ref="classApp1" />
    </logger>

    <logger name="ClassLibrary2">
      <level value="WARN" />
      <maximumfilesize value="256KB" />
      <param value="WARN" name="Threshold" />

      <appender-ref ref="classApp2" />
    </logger>

    <logger name="WindowsApplication1">
      <level value="WARN" />
      <maximumfilesize value="256KB" />
      <param value="WARN" name="Threshold" />

      <appender-ref ref="application" />
    </logger>

  </log4net>

您可以看到三个 <logger /> 项和从这些记录器引用的单独的 标签。 <logger /> 的“name”将指定库或应用程序的 root namespace 。 指定您需要从记录器引用的appender。 执行应用程序时,如果从 ClassLibrary2.Class2 写入日志,它将引用 <logger name="ClassLibrary2" /> 条目。 这意味着输出将在 *c:\\Library2.txt* 文件中。 通过这种方式,您可以动态指定任意数量的记录器。

注意: Visual Studio 2005 格式的代码。

关注点

通过此选项,我们可以根据需要自定义我们的日志详细信息。 也可以按类记录日志。

历史

  • 2007 年 5 月 9 日:第一个版本
© . All rights reserved.