2009-09-12 39 views
2

现在,我通过创建RollingFileAppender实例然后调用BasicConfigurator.Configure()以编程方式配置log4net。这很好,但我试图创建两个相同的文件 - 一个在为每次应用程序运行创建的时间戳目录中,另一个在静态位置,以便开发人员轻松截取最新日志。 (这只用于运行自动化测试,因此创建一大堆目录不是问题)以编程方式配置log4net将相同的消息写入两个单独的文件

理想情况下,我希望这些文件完全相同,但我意识到log4net可能不会使这成为可能。如果他们有不同的记录器名称,那很好 - 只要我可以将一条日志语句写入这两个日志文件。

我当前的代码:

IAppender appender = new RollingFileAppender 
{ 
    ... 
} 

appender.ActivateOptions(); 

BasicConfigurator.Configure(appender); 
+0

为什么不在配置文件中设置两个appender,然后使用单独的配置文件进行测试? – TrueWill 2009-09-12 16:49:12

+0

@TueWill:这些测试使用独立的.exe以及Powershell cmdlet运行。从Powershell运行时,.config文件中的log4net部分不会被读取。以编程方式执行此操作允许我们在两种情况下使用相同的配置。 – 2009-09-12 17:00:28

回答

3

虽然这是完全可以完全做到这一点编程我不喜欢这里解释API,它很容易查找。

到目前为止,最简单和最灵活的方式是配置两个appender从配置文件中读取它。您可以通过调用log4net.Config.XmlConfigurator.Configure()来强制执行此操作,如果要将所有代码都保存在一起,您甚至可以将XmlElement传入Configure()。

+1

以编程方式构建XML,然后调用XmlConfigurator变得非常简单。谢谢。 – 2009-09-15 18:43:37

相关问题