我想在控制台应用程序中实现日志记录。由于我正在使用期望ILogger
的库,因此我需要提供一个。
由于我不完全理解的原因,每篇文章似乎都建议我使用SeriLog,而不是编写自己的日志记录器。但是没有人给出令人信服的理由。
无论哪种情况,我都需要以下内容:
- 记录的信息应该进入控制台。
- 记录的信息应该进入一个日志文件。
- 在我的应用程序运行后,我想把所有的信息登录到一个电子邮件。
谁能告诉我如何才能完成这三个,如果我真的需要像SeriLog
这样的东西来做到这一点?
注意:我认为从日志文件中读取并使用它通过电子邮件发送日志是没有意义的。日志文件可以包括来自许多会话的日志记录,我只想通过电子邮件发送来自最近会话的数据。
根据您列出的要求,似乎Serilog将非常适合您,因为您可以利用现有接收器的组合,如控制台,文件和可能的内存-尽管您不需要最后一个…你可以很容易地为每个会话创建一个独特的日志文件,读取该文件并通过电子邮件发送,如果这是你想要实现的…
如果你对最后一部分非常特别,你可以编写自己的Serilog sink,以你想要的方式缓冲日志事件,然后在最后通过电子邮件发送。
也就是说,通过电子邮件给自己发送日志已经不再是人们真正做的事情了…你可以使用更好的接收器将日志直接发送到存储/服务,这些存储/服务可以持续自动摄取日志,并提供出色的ui和api来查询日志……你可能想看看Seq, Sentry, DataDog等…
Serilog是一个设计良好的库,使用非常广泛,并且经过了彻底的测试,在撰写本文时,有近27,000个开源项目和数百个贡献者。
如果你认为你可以创新日志记录的完成方式,并将其提升到一个新的水平,那么这将是一个很好的理由来滚动你自己的库,否则似乎是浪费时间重新发明轮子。
创新实际上是Serilog产生的原因…其他广泛使用的日志库,如Log4Net和NLog之前就存在,但Serilog使语义日志成为。net领域的主流,并结合了一种精心设计的创建扩展(sink,富集器,析构器等)的方式。剩下的就是历史了…NLog很快就跟随了Serilog的脚步,随着时间的推移,Log4Net变得过时了,在这一点上是遗留的。