c# - 登录 C# Windows 服务

标签 c# logging windows-services

“记录”Windows 服务事件的最佳方式是什么,我应该使用 Windows 日志事件查看器,还是只使用纯文本文件。如果我使用事件日志,我认为事件日志可能已满。

最佳答案

我最喜欢的日志框架是 Serilog .我们利用ELK用于日志聚合,因此 Serilog 设置为写入日志 JSON 格式,例如

{"Level":"Information","MessageTemplate":"Service Started","Timestamp":"2017-07-27T11:29:54.3948669+01:00"}
{"Level":"Information","MessageTemplate":"Service Stopped","Timestamp":"2017-07-27T11:31:14.8305763+01:00"}

然后发送这些日志以进行聚合,并且可以通过 Web 界面查看和搜索 - 我们不会费心记录到事件日志,因为没有人登录到这些框。

如果您只有几个服务,那么日志聚合可能就有点过分了——它很容易让 Serilog 写入其他格式(例如,事件日志,或更易于人类阅读的非 json 格式的文件) .

一定要使用日志框架(log4net 也不错,我也听说过关于 NLog 的好消息,但我自己从未使用过)。任何好的日志记录框架都可以让您有选择地将重要消息记录到事件日志中。

关于c# - 登录 C# Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347651/

相关文章:

c# - 像 binaryWriter.Write((byte)67) 这样的东西是否涉及运行时转换?

c# - 使用注释和 IValidatableObject 进行递归验证

python - 如何将 celery 所有日志发送到自定义处理程序。在我的例子中是 python-logstash 处理程序

regex - 获取Text.RegularExpressions.Regex匹配的行号

c# - 如何使用 Win32 API 在与 LocalSystem 帐户不同的帐户下安装服务?

java - 当应用程序终止时记录 Java Windows 服务而不需要额外的库的想法

c# - 需要获取多个列表的所有组合,从每个列表中获取集合金额

node.js - 跟踪和记录从 node.js 服务器内部发出的 http 调用

windows-services - 使用 NSSM API 检查给定的服务名称是否存在及其状态

c# - WinForms 中的模型 View 展示器