.NET日志框架设计
我们在当前的应用程序日志记录中使用log4net,但我不喜欢当前围绕它构建日志框架的方式。例如,它当前有一个单点故障,如果出于任何原因它无法连接到日志服务器,那么您就没有日志记录。我希望将其构建为一个灵活但简单的框架,允许我指定一个或多个“备份”追加器,以便在主追加器出现故障时使用(例如,如果日志服务器关闭,则改为写入文件) 你们有没有人偶然发现过这样的东西,你们喜欢并且写得很好?我不介意自己动手,但我非常喜欢尝试不去重新发明轮子.NET日志框架设计,.net,logging,log4net,.net,Logging,Log4net,我们在当前的应用程序日志记录中使用log4net,但我不喜欢当前围绕它构建日志框架的方式。例如,它当前有一个单点故障,如果出于任何原因它无法连接到日志服务器,那么您就没有日志记录。我希望将其构建为一个灵活但简单的框架,允许我指定一个或多个“备份”追加器,以便在主追加器出现故障时使用(例如,如果日志服务器关闭,则改为写入文件) 你们有没有人偶然发现过这样的东西,你们喜欢并且写得很好?我不介意自己动手,但我非常喜欢尝试不去重新发明轮子 谢谢我没有遇到任何已经建成的东西。我建议您创建自己的append
谢谢我没有遇到任何已经建成的东西。我建议您创建自己的appender,它使用现有的appender,但在属性中添加失败时的操作。可以使用作为新appender的基类,然后从中调用要使用的appender的append函数 因此,当log4使用您的记录器时,它将是这样的(注意:这并不完整,但应该给您一个起点):
我希望这能帮助您开始,如果您完成了,您也可以在这里发布解决方案。事实上,我决定改用NLog,因为log4net的设置非常麻烦。NLog更易于使用,更易于设置,并且代码库保持最新(log4net几乎被放弃)两者的结合支持这一点:记录器将所有事件缓冲到一组滚动文件中,然后异步读取这些文件,并使用HTTP/S将其发送到服务器 配置看起来像:
var log = new LoggerConfiguration()
.WriteTo.Seq("http://my-seq-server", bufferBaseFilename: "C:\\Logs\\myapp")
.CreateLogger();
我在这两个项目上都有工作-渴望得到一些关于这种方法如何符合要求的反馈(如果你足够幸运,能够切换到Serilog;)NLog允许指定多个日志目标。log4net不也允许吗?我认为OP想要的是有多个日志目标,但只有在主日志目标不可用时才使用备用日志目标。可能重复:谢谢Kevin,这是一个很好的方法…我实际上写了一些与log4j包类似的东西,但那可能是5-6年前的事了,不幸的是我找不到该死的代码。如果我发现了一些东西,或者只是白手起家地写下来,我一定会发回这里,干杯
var log = new LoggerConfiguration()
.WriteTo.Seq("http://my-seq-server", bufferBaseFilename: "C:\\Logs\\myapp")
.CreateLogger();