【发布时间】:2010-07-14 08:51:46
【问题描述】:
这是我的情况。我已经使用 log4net 成功实现了对远程 syslog 的日志记录。但是,据我测试,如果 syslog IP 无效,则所有消息都不会记录在任何地方,也不会引发异常。它什么也不做。
因此,最好有某种回退。假设如果写入 syslog 失败,则写入文件或数据库。
log4net 甚至可以吗?还是我必须将其配置为同时登录到两个位置?
【问题讨论】:
标签: log4net log4net-configuration
这是我的情况。我已经使用 log4net 成功实现了对远程 syslog 的日志记录。但是,据我测试,如果 syslog IP 无效,则所有消息都不会记录在任何地方,也不会引发异常。它什么也不做。
因此,最好有某种回退。假设如果写入 syslog 失败,则写入文件或数据库。
log4net 甚至可以吗?还是我必须将其配置为同时登录到两个位置?
【问题讨论】:
标签: log4net log4net-configuration
我认为你不能通过配置来做到这一点。这个问题是open in the log4net feature backlog。
如果您的应用程序可以消耗日志记录开销,最简单的解决方案是默认记录到备用附加程序。
或者,您可以尝试将您正在使用的 appender 包装在自定义 appender 中,并在 syslog appender 引发异常时实施回退方案。如果它不默默地吞下它们。
来自log4net FAQ:
您可以实现 log4net.Appender.IAppender 接口来创建您自己的自定义 appender。我们建议您扩展 log4net.Appender.AppenderSkeleton 类,而不是从头开始。您应该在与 log4net 程序集分开的程序集中实现您的自定义代码。
首先,有必要查看 log4net.Appender.TraceAppender 的源代码,作为让 appender 工作所需的最少代码量的示例。
第三种选择是查看附加程序的源代码,看看是否可以分叉它并在那里进行必要的自定义。
【讨论】: