2011-10-11 88 views
0

所以,我已经有一个使用log4net的,和我的web.config目前看起来像NHibernate的工作:需要修改这个log4net的写入到文件中,写入多个文件的能力

<log4net debug="false"> 
    <appender name="console" type="log4net.Appender.ConsoleAppender, log4net"> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
     <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n"/> 
    </layout> 
    </appender> 
    <!-- Setup the root category, add the appenders and set the default priority --> 
    <root> 
    <priority value="INFO"/> 
    <appender-ref ref="console"/> 
    </root> 
</log4net> 

现在我的电流要求是能够为我的应用程序中的每个主要模块创建一个单独的日志文件。

现在,它似乎只是写给控制台,但我需要添加写入文件的能力。

我必须在我的配置中修改才能做到这一点?

我希望能够在我的代码中说我想写入日志文件“logfile_1”,如果它不存在,创建它,否则只是追加到它。

回答

2

真不简单,冲洗并根据需要为你想要的,如果你想让他们分开了这样你也可以用不同的文件命名空间相关联的文件的数量重复,但我觉得它更容易只是使用Log2Console查看文件一起。

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="k:\temp\log2console.log" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j" /> 
</appender> 

不要忘记将appender-ref添加到根部分。

+2

此外,您可以使用RollingFileAppender,它具有更强大的功能,可用于自动存档或自动备份达到特定大小或日期的文件。 [RollingFileAppender](http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html) – ooPeanutButter

+0

我无法设置它,因此我不必定义名称文件名? – codecompleting

+1

@codecompleting:创建你自己的appender是相当简单的,所以如果你想要的文件价值略有不同,相同的功能,我相信你可以创建它。由于我通常想知道给定应用程序的日志文件的内容和位置,因此我没有对它进行太多的研究。 – Druegor