我的web.config文件中有以下配置,但如何在C#中将信息分别记录到data.txt
和general.txt
?
有人可以为我提供一些示例代码吗?
<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
<file value="App_Data/Logs/general.txt" />
<appendToFile value="true" />
<maximumFileSize value="2MB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="DataLog" type="log4net.Appender.RollingFileAppender">
<file value="App_Data/Logs/data.txt" />
<appendToFile value="true" />
<maximumFileSize value="2MB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
答案 0 :(得分:4)
在您的应用中,理想情况下,您应该使用不同的记录器以相同的方式记录常规和数据。在配置中,您可以选择如何将传入的日志消息“路由”到不同的appender。
首先是记录器本身。根据应用程序在类和命名空间方面的组织方式,您可以根据命名空间层次结构以分层方式组织记录器。然后,您可以在层次结构中使用不同的分支到不同的appender。阅读Level继承部分here。
除记录器层次结构外,您还可以使用任何名称作为记录器名称。因此,对于应用的常规部分,您可以使用名为“general”的记录器。
您可以使用filters来控制日志消息流。您可以过滤记录器名称,级别,属性等消息,也可以实现自己的过滤器。
这是一个示例,展示如何使用logger元素和过滤器将常规和数据路由到appender。我们将根元素(接收所有日志消息)路由到数据追加器。在数据追加器中,我们过滤掉来自通用记录器的所有消息。
此外,我们将常规记录器路由到常规appender。
<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
...
</appender>
<appender name="DataLog" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="general" />
<acceptOnMatch value="false" />
</filter>
...
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="DataLog" />
</root>
<logger name="general">
<level value="WARN" />
<appender-ref ref="GeneralLog" />
</logger>