log4net:拒绝除日志记录以外的其他组件

时间:2010-08-25 04:58:07

标签: nhibernate log4net castle-activerecord

假设您正在使用一些内部使用log4net的NHibernate或Castle ActiveRecord等库。您的应用程序也使用log4net。可以配置所有应用程序以将日志保存到文件或任何其他输出中。但问题是通过为我自己的应用程序启用log4net,其他程序将其日志保存到日志文件中,并使其快速增长,并显示我目前不需要的信息。

如何将每个应用程序的日志路由到不同的输出,或者至少如何拒绝其他应用程序进行日志记录?

2 个答案:

答案 0 :(得分:2)

NHibernate / Castle Active Record会生成大量日志信息,但这都是DEBUG级别的日志记录。因此,您可以在配置文件中将日志级别从“ALL”调低为“INFO”或“ERROR”,您应该没问题。

log4Net还支持命名的log​​ger和logger层次结构。我相信NHibernate / Castle都会使用命名的log​​ger。因此,您可以选择使用配置忽略该特定的命名记录器。请参阅log4Net help它们使用的位置具有不同的Com.Foo库日志记录级别。

使用命名记录器是从不同组件/模块/库等中分离日志跟踪的典型方法。每个应用程序(如在不同的进程中)将具有不同的配置文件,并且您始终可以使用不同的日志文件来分隔日志跟踪。

答案 1 :(得分:1)

将不同的记录器指向不同的appender。

伪示例:

<log4net>
  <appender name="MyAppender" type="log4net.Appender.FileAppender">
  <!--appender properties (file name, layout, etc)-->
  </appender>
  <appender name="NHAppender" type="log4net.Appender.FileAppender">
  <!--ditto-->
  </appender>
  <logger name="MyAppMainNamespace">
    <level value="INFO"/>
    <appender-ref ref="MyAppender" />
  </logger>
  <logger name="NHibernate">
    <level value="ERROR"/>
    <appender-ref ref="NHAppender" />
  </logger>
</log4net>