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