我有以下代码用于记录我通过在线研究找到的 Windows 服务。它在我的服务类中完成,然后像下面这样被初始化。
public GBBInvService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MyLogSource"))
System.Diagnostics.EventLog.CreateEventSource("MyLogSource",
"MyDoLog");
eventLog1.Source = "MyLogSource";
eventLog1.Log = "MyDoLog";
}
记录时的代码:
eventLog1.WriteEntry("GBBInvService Service Started");
然而,我们的顾问建议我不要这样做。他的评论如下:
我会避免让服务在运行时创建事件源。这要求服务以高权限运行(即对计算机的访问权限比实际需要的更多)。设置 Windows 事件日志源实际上是一项安装时的工作。您可能能够将事件日志安装程序添加到项目安装程序文件(连同服务安装程序),然后事件源将始终存在
这个建议的问题是我无法找到在项目安装程序文件中创建日志的任何示例。我还尝试将此日志创建部分移动到我的项目安装程序中,但它不会让我从我的 Web 服务 cs 页面调用或写入 eventlog1。他还建议使用 log4net,但这对我来说是新事物,而且很难掌握。我刚刚完成了我的第一个 Windows 服务项目,我对 Windows 服务仍然很陌生,并且非常感谢在项目安装程序中创建日志、从我的服务 cs 页面或 log4net 上的任何提示中写入日志的任何方向。