从控制台应用程序实现控制台、文件和内存日志记录
Implement console, file and memory logging from console application
我想在控制台应用程序中实现日志记录。由于我使用的库需要 ILogger
,因此我需要提供一个。
由于我不太了解的原因,每篇文章似乎都建议我使用 SeriLog 而不是编写自己的记录器。但是没有人提供令人信服的理由。
无论哪种情况,我都需要以下内容:
- 记录的信息应该进入控制台。
- 记录的信息应该进入日志文件。
- 我的应用程序运行后,我想把所有的信息记录到一个电子邮件中。
谁能告诉我如何完成这三个任务,如果我真的需要 SeriLog
这样的东西来做到这一点?
注意:我认为读取日志文件并使用它通过电子邮件发送日志没有意义。日志文件可能包含许多会话的日志记录,我只想通过电子邮件发送最近会话的数据。
根据您列出的要求,Serilog 似乎非常适合您,因为您可以利用 existing sinks such as Console, File, and possibly Memory 的组合 - 尽管您不需要最后一个...可以轻松地为每个会话创建一个唯一的日志文件,读取该文件并通过电子邮件发送,如果这是您想要实现的...
如果您真的很在意最后一部分,您可以write your own Serilog sink按照您想要的方式缓冲日志事件,然后在最后通过电子邮件发送。
也就是说,如今人们不再真正通过电子邮件向自己发送日志...有better sinks that you can use to send logs directly to a store/service that can continuously ingest logs automatically and provide great UIs and APIs to query your logs... You might want to take a look at Seq, Sentry, DataDog,还有其他...
Serilog 是一个设计良好的库,使用非常广泛,并且经过全面测试,with close to 27,000 open-source projects and hundreds of contributors,截至撰写本文时。
如果您认为您可以创新日志记录的方式并将其提升到一个新的水平,那么这将是推出您自己的库的一个很好的理由,否则似乎是在浪费时间重新发明轮子。
创新实际上是 Serilog 的诞生方式...其他广泛使用的日志记录库(例如 Log4Net and NLog 之前就已经存在,但是 Serilog 使语义日志记录在 .NET space 中成为主流,再加上精心设计的创建扩展的方式(sinks,enrichers,destructures,...)。剩下的就是历史了……NLog 很快就跟随了 Serilog 的脚步,随着时间的推移,Log4Net 变得过时了,在这一点上成为了遗产。
我想在控制台应用程序中实现日志记录。由于我使用的库需要 ILogger
,因此我需要提供一个。
由于我不太了解的原因,每篇文章似乎都建议我使用 SeriLog 而不是编写自己的记录器。但是没有人提供令人信服的理由。
无论哪种情况,我都需要以下内容:
- 记录的信息应该进入控制台。
- 记录的信息应该进入日志文件。
- 我的应用程序运行后,我想把所有的信息记录到一个电子邮件中。
谁能告诉我如何完成这三个任务,如果我真的需要 SeriLog
这样的东西来做到这一点?
注意:我认为读取日志文件并使用它通过电子邮件发送日志没有意义。日志文件可能包含许多会话的日志记录,我只想通过电子邮件发送最近会话的数据。
根据您列出的要求,Serilog 似乎非常适合您,因为您可以利用 existing sinks such as Console, File, and possibly Memory 的组合 - 尽管您不需要最后一个...可以轻松地为每个会话创建一个唯一的日志文件,读取该文件并通过电子邮件发送,如果这是您想要实现的...
如果您真的很在意最后一部分,您可以write your own Serilog sink按照您想要的方式缓冲日志事件,然后在最后通过电子邮件发送。
也就是说,如今人们不再真正通过电子邮件向自己发送日志...有better sinks that you can use to send logs directly to a store/service that can continuously ingest logs automatically and provide great UIs and APIs to query your logs... You might want to take a look at Seq, Sentry, DataDog,还有其他...
Serilog 是一个设计良好的库,使用非常广泛,并且经过全面测试,with close to 27,000 open-source projects and hundreds of contributors,截至撰写本文时。
如果您认为您可以创新日志记录的方式并将其提升到一个新的水平,那么这将是推出您自己的库的一个很好的理由,否则似乎是在浪费时间重新发明轮子。
创新实际上是 Serilog 的诞生方式...其他广泛使用的日志记录库(例如 Log4Net and NLog 之前就已经存在,但是 Serilog 使语义日志记录在 .NET space 中成为主流,再加上精心设计的创建扩展的方式(sinks,enrichers,destructures,...)。剩下的就是历史了……NLog 很快就跟随了 Serilog 的脚步,随着时间的推移,Log4Net 变得过时了,在这一点上成为了遗产。