在单独的log4net日志中记录来自另一个程序集的事件

时间:2011-01-31 09:28:04

标签: log4net log4net-configuration

我有以下log4net配置

  <log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\\CurrentLog.txt"/>
      <appendToFile value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>
    <root>
      <priority value="ALL"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>

是否可以将来自不同程序集的事件记录在不同的文件中?例如,来自

的消息
  

Castle.Facilities.NhibernateIntegration

如果不是这样,是否有更好的方法来过滤事件? 我不想将流限制为只有错误。

1 个答案:

答案 0 :(得分:1)

可以按名称配置记录器。如果您正在执行idiomatic log4net做法,则您的记录器将按其完整Namespace.TypeName命名。您可以通过两种方式将追加器分配给记录器。

首先是直接嵌入特殊的appender

<logger name="Castle.Facilities.NhibernateIntegration">
    <level value="INFO" />
    <appender name="CastleNhIntegrationAppender" type="...">
        <!-- put the full appender configuration here -->
    </appender>
</logger>

或者定义appender并在记录器中引用它

<appender name="CastleNhIntegrationAppender" type="...">
    <!-- put the full appender configuration here -->
</appender>

<logger name="Castle.Facilities.NhibernateIntegration">
    <level value="INFO" />
    <appender-ref ref="CastleNhIntegrationAppender" />
</logger>