1

我有一个 Windows 服务应用程序,我在其中创建了 eventLog 对象。

eventLog.Log = "MyLog"; // I'm not really sure what value to choose here
eventLog.Source = this.ServiceName;

我安装应用程序并在 VS2012 中转到:

ServerExplorer -> 服务器 -> myDevice -> EventLogs -> MyLog

但我无法读取此文件。在我的应用程序中,我实现了 FileSystemWatcher,并在某些事件中将信息写入我的日志文件。我如何访问此信息(调试所需)。

4

1 回答 1

2

去:

组件服务 > 事件查看器 > 应用程序和服务 > MyLog。

您可以通过在搜索区域的“开始”中键入组件服务或转到

控制面板,将视图更改为小图标选择管理工具

笔记:

我认为您应该更改事件日志源和日志名称,如下所示

eventLog.Source = "ServiceNameSource";
eventLog.Log = "ServiceNameLog"

编辑:

如果要使用自定义源,请执行以下操作:

第一个选项:您必须以管理员身份运行应用程序。因为否则您的应用程序将无法在安全日志中进行搜索,并且会抛出 SecurityException。

        EventLog testEventLog = this.EventLog;
        //Or if you are not using windows service, then:
        //EventLog testEventLog = new EventLog();
        testEventLog.Source = "TestServiceSource";
        testEventLog.Log = "TestServiceLog";

        //If log source doesn't exists create new one
        if (!System.Diagnostics.EventLog.SourceExists(testEventLog.Source))
        {
            System.Diagnostics.EventLog.CreateEventSource(testEventLog.Source, testEventLog.Log);
        }

第二种选择:您不必以管理员身份运行您的应用程序。但它不会搜索安全日志。

        EventLog testEventLog = this.EventLog;
        //Or if you are not using windows service, then:
        //EventLog testEventLog = new EventLog();
        testEventLog.Source = "TestServiceSource";
        testEventLog.Log = "TestServiceLog";

        bool eventSourceExists = false;
        try
        {
            eventSourceExists = System.Diagnostics.EventLog.SourceExists(testEventLog.Source);
        }
        catch(System.Security.SecurityException)
        {           
            eventSourceExists = fasle;
        }

        //If log source doesn't exists create new one
        if (!eventSourceExists)
        {
            System.Diagnostics.EventLog.CreateEventSource(testEventLog.Source, testEventLog.Log);
        }
于 2013-02-22T13:58:18.393 回答