3

这是我的情况。我已经使用 log4net 成功实现了对远程 syslog 的日志记录。但是,据我测试,如果 syslog IP 无效,则所有消息都不会记录在任何地方,也不会引发异常。它什么也不做。

因此,最好有某种后备。假设如果写入 syslog 失败,则写入文件或数据库。

log4net甚至可以吗?或者我是否必须将其配置为同时登录到两个位置?

4

1 回答 1

3

我不认为你可以通过配置来做到这一点。此问题在 log4net 功能积压中打开

如果您的应用程序可以吃掉日志记录开销,最简单的解决方案是默认记录到备用附加程序。

或者,您可以尝试将您正在使用的 appender 包装在自定义 appender 中,并在 syslog appender 引发异常时实施回退方案。如果它不默默地吞下它们。

log4net 常见问题解答

您可以实现 log4net.Appender.IAppender 接口来创建您自己的自定义 appender。我们建议您扩展 log4net.Appender.AppenderSkeleton 类,而不是从头开始。您应该在与 log4net 程序集分开的程序集中实现您的自定义代码。

开始之前,值得查看 log4net.Appender.TraceAppender 的源代码,作为让 appender 工作所需的最少代码量的示例。

第三种选择是查看附加程序的源代码,看看是否可以分叉它并在那里进行必要的自定义。

于 2010-07-14T09:14:47.667 回答