2010-03-08 72 views
4

我在我的web.config文件下面的配置,但我怎么可以将这些信息记录到data.txt和C#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> 

回答

4

在您的应用程序中,理想情况下,您应该使用不同的记录器以相同的方式记录常规和数据。在配置中,您有几个选项可以将传入的日志消息“路由”到不同的appender。

首先是伐木工人自己。根据您的应用程序按类和名称空间的组织方式,您可以根据您的名称空间层次结构以分层方式组织记录器。然后你可以让层次结构中的不同分支转到不同的appender。阅读Level Inheritance部分here

除了记录器层次结构,可以使用任何名称作为记录器名称。因此,对于您的应用程序的常规部分,您可以使用名为“general”的记录器。

你可以用它来控制日志消息流

下一件事情就是使用filters。您可以在记录器名称,级别,属性等上过滤消息,也可以实施自己的过滤器。

下面是一个样本,以显示你怎么可能途径一般和数据使用记录器元件和过滤器的追加程序。我们将根元素(接收全部日志消息)路由到数据appender。在数据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> 
相关问题