使用 log4net 发送日志文件的最佳方法

Posted

技术标签:

【中文标题】使用 log4net 发送日志文件的最佳方法【英文标题】:Best approach for sending log files with log4net 【发布时间】:2012-07-13 03:21:48 【问题描述】:

在日志机制中发送整个文件(日志文件等)的最佳方法是什么?

理想情况下,我们希望有一种机制,不仅可以发送一些日志信息(异常消息、类和方法等),还可以将一些日志文件(或任何一般文件)传输到我们的电子支持系统) 这会有所帮助。我们希望这种机制尽可能多地为每个应用程序参数化(指定要发送的文件或文件夹,指定如何发送或何时发送,发生哪个错误等。) 我们还需要找到一种方法将这些文件“附加”到我们在电子支持平台的数据库系统中的日志信息中,而不仅仅是发送它们然后尝试手动归档它们。

我最初的想法是使用 SMTP 附加程序的修改版本和 找到发送文件的方法(可能先压缩它们)

我还想过制作一个 FTP(或 SFTP)附加程序来传输 文件到我们电子支持系统中的 sftp 文件夹中。

另一个想法是在生产机器上提供 Windows 服务 并有一个附加器,可以向该服务发出信号以收集和 发送某些文件(以便收集文件的所有麻烦, 压缩它们并发送它们,驻留在应用程序本身之外 以防应用程序崩溃或其他情况。我们谈论胜利和网络 应用程序)

我也想到了修改现有的webservice appender,添加 web服务本身的一些逻辑,所以当appender发送时 记录信息,响应将指示附加程序也发送 一些文件可以以任何方式发送。

那么,满足此要求的最佳方法是什么?有任何想法吗?有什么需要注意的吗?

【问题讨论】:

你最终想到了什么? 这个功能似乎在这个过程中被放弃了......至少现在是这样。 【参考方案1】:

一些问题: 您希望何时发送日志信息?总是或在异常发生后?在应用程序关闭?

根据您的回答,拥有一个处理您的要求并仅发送由当前配置的日志附加程序创建的文件的类可能会更容易。在这种情况下,我建议不要创建自己的附加程序,而是创建一个单独的类,而是构建 something along those lines。

【讨论】:

文件可以在每次错误时发送或按需发送。接收初始错误日志信息(不是文件)的 Web 服务可能有一个可配置的逻辑来决定记录器是否也应该发送一些文件

以上是关于使用 log4net 发送日志文件的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用了log4net,发布系统后,发现无法写日志了,怎么办

如何将 Log4Net 日志发送到 Application Insights for .NET Core 3.1 Web 应用程序?

有啥方法可以监控 log4net 日志文件以获取应用程序洞察力

Log4net 不将日志写入日志文件

基于日志级别的 log4net smtpappender 主题

调用 log4net 包装器方法后未在日志中获取文件名和行号