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

发布于 2024-08-04 18:28:31 字数 449 浏览 3 评论 0原文

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

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

我当前的代码:

IAppender appender = new RollingFileAppender
{
    ...
}

appender.ActivateOptions();

BasicConfigurator.Configure(appender);

Right now, I'm programmatically configuring log4net by creating a RollingFileAppender instance then calling BasicConfigurator.Configure(). This is working great, but I'm trying to create two identical files - one in a timestamped directory that gets created for every run of the app, another in a static location to make it easy for a developer to tail the most current log. (this is only used for running automated tests, so creating a huge pile of directories is not a concern)

Ideally, I'd like the files to be completely identical, but I realize log4net might not make this possible. If they have different logger names, that's fine - as long as I can have one log statement write to both log files.

My current code:

IAppender appender = new RollingFileAppender
{
    ...
}

appender.ActivateOptions();

BasicConfigurator.Configure(appender);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

锦上情书 2024-08-11 18:28:31

尽管完全有可能以编程方式完成此操作,但我不想在这里解释 API,但它很容易查找。

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

Although it's perfectly possible to do it completely Programmatically I don't feel like explaining the API here, it's easy enough to lookup.

By far the easiest and most flexiable way would be to configure two appenders read it from the config file. You can force this by calling upon log4net.Config.XmlConfigurator.Configure() and you can even pass in a XmlElement into Configure() if you want to keep it all in code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文