如何在事件查看器中获取服务

时间:2012-01-05 03:48:49

标签: .net windows-services

我创建了一个Windows服务。安装服务后,我开始服务。但我没有得到我的服务的事件日志。

我使用了以下代码。

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        InitializeComponent();
        this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName");
        string sourceName = ConfigurationManager.AppSettings["Source"];
        string logName = ConfigurationManager.AppSettings["Log"];
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
        eventLog.Source = sourceName;
        eventLog.Log = logName;

    }

    protected override void OnStart(string[] args)
    {
        eventLog.WriteEntry("Service Starting...");
    }

    protected override void OnStop()
    {
        eventLog.WriteEntry("Service Stopped...");
    }
}

我在事件视图中检查了这个,我没有得到我的服务名称。

如何得到这个。

谢谢, Pooja

1 个答案:

答案 0 :(得分:0)

最可能的原因是服务用户没有足够的权限来创建事件源。

您需要向构造函数添加try / catch处理程序,以确定是否属于这种情况。

您还可以尝试以本地管理员用户身份运行该服务,这应该会导致创建事件源。

由于这个原因,我们总是在安装期间创建事件源,并且需要管理员用户来运行安装。

我们使用的另一个选项是在我们遇到创建事件源的安全异常的情况下优雅地降级为使用应用程序事件日志:

    try {
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
    } catch (SecurityException e) {
        sourceName = "Application";
    }
    eventLog.Source = sourceName;
相关问题