我们的客户有一个我们必须打电话的网络服务,他们要求我们将所有流量记录到网络服务。也就是说,我们必须记录对服务的调用的输入和输出,并且所有日志条目都可用是非常关键的。 log4net适合这种关键日志记录吗?例如,我们遇到了一个log4net的功能,如果我们登录到数据库,并且连接丢失,默认情况下不会重新建立。 此外,据我所知,默认情况下log4net是异步的,这意味着即使日志操作失败,也存在丢失某些日志项的风险或者告知用户呼叫进行良好的风险。 有没有人对上述内容有任何评论?
答案 0 :(得分:2)
log4net是一个可靠的日志记录系统吗?
没有。 log4net不可靠。这是一种尽力而为的故障停止日志记录 系统
这意味着log4net将尽最大努力完成日志记录操作,但如果它因任何原因失败,log4net将不会破坏托管应用程序:
log4net不会还原为System.Console.Out或System.Console.Error 当其指定的输出流未打开时,不可写或 变满了。 ...但是,log4net将输出一条消息 System.Console.Error和System.Diagnostics.Trace指示 无法执行日志记录
根据内置Web服务客户端的技术,它可能包括消息跟踪功能(如can be enabled in the client的WCF跟踪),或者您可能必须自己构建一些内容才能执行此操作。
但是,如果记录消息至关重要,请不要依赖log4net。