C# 记录Windows服务
我有下面的代码来记录我的windows服务,这是我通过在线研究发现的。 它是在我的服务类中完成的,在初始化之前,如下所示C# 记录Windows服务,c#,logging,windows-services,log4net,event-log,C#,Logging,Windows Services,Log4net,Event Log,我有下面的代码来记录我的windows服务,这是我通过在线研究发现的。 它是在我的服务类中完成的,在初始化之前,如下所示 public GBBInvService() { InitializeComponent(); if (!System.Diagnostics.EventLog.SourceExists("MyLogSource")) System.Diagnostics.EventLog.Cre
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服务项目,如果能在project installer中创建日志,从我的服务cs页面或log4net上的任何提示向它写信,我将非常感激 您的顾问是正确的,在服务中这样做是个坏主意 以下是如何在安装程序中创建事件源: 短版本:子类安装程序,并在子类安装程序的构造函数中创建事件日志源 更新 从链接: 执行服务安装程序后,日志已“注册”,但尚未创建。要创建它,必须编写一个事件。如果服务使用受限用户帐户运行,则该帐户可能没有足够的安全权限写入第一个日志,因为需要创建日志 示例代码没有显示正在编写的一个事件。确保你正在这样做 安装服务时,用户必须以管理员身份运行安装程序 确保以管理员身份运行安装程序 根据您的评论: 服务无法启动
在事件日志中查找未启动的原因。可能它引发了异常,例如,如果您没有在安装程序中编写一个事件,或者您没有以管理员身份运行安装程序。谢谢。如果您查看了上面提供的链接,页面底部会有一个用户的评论。我也面临同样的问题。服务无法启动。添加的更新可能导致服务无法启动。