C# 以编程方式配置log4net,将相同的消息写入两个单独的文件

C# 以编程方式配置log4net,将相同的消息写入两个单独的文件,c#,log4net,C#,Log4net,现在,我正在通过创建RollingFileAppender实例,然后调用BasicConfigurator.Configure()以编程方式配置log4net。这很好,但我正在尝试创建两个相同的文件——一个在为每次运行应用程序创建的时间戳目录中,另一个在静态位置,以便开发人员跟踪最新的日志。(这只用于运行自动测试,因此创建一大堆目录并不重要) 理想情况下,我希望文件完全相同,但我意识到log4net可能无法做到这一点。如果它们有不同的记录器名称,那没关系——只要我可以将一条日志语句写入两个日志文

现在,我正在通过创建RollingFileAppender实例,然后调用BasicConfigurator.Configure()以编程方式配置log4net。这很好,但我正在尝试创建两个相同的文件——一个在为每次运行应用程序创建的时间戳目录中,另一个在静态位置,以便开发人员跟踪最新的日志。(这只用于运行自动测试,因此创建一大堆目录并不重要)

理想情况下,我希望文件完全相同,但我意识到log4net可能无法做到这一点。如果它们有不同的记录器名称,那没关系——只要我可以将一条日志语句写入两个日志文件

我当前的代码:

IAppender appender = new RollingFileAppender
{
    ...
}

appender.ActivateOptions();

BasicConfigurator.Configure(appender);

虽然完全可以通过编程实现,但我不想在这里解释API,它很容易查找


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

为什么不在配置文件中设置两个附加器,然后为测试使用单独的配置文件?@TrueWill:这些测试使用独立的.exe运行,以及Powershell cmdlet。从Powershell运行时,无法读取.config文件中的log4net部分。通过编程,我们可以在两种情况下使用相同的配置。通过编程构建XML,然后调用XmlConfigurator变得简单得多。谢谢