自定义EventLog应该在哪里创建?

时间:2016-09-12 21:39:50

标签: c# .net logging windows-services event-viewer

我有一个Windows服务。我很难让EventLog正常工作。

在Windows Service的构造函数中,我执行:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX hotel: <http://users.jyu.fi/~mimomuki/everything/hotel#>

SELECT *
    WHERE { ?room  hotel:hasCity ?sender; hotel:hasFirstDay ?Firstday
        FILTER ( ?Firstday >= "2016-09-01"^^xsd:date )      
        }

运行服务后,我没有例外,但我在事件查看器中的应用程序和服务日志下看不到任何内容! (即使在电脑复位后)。

我检查了我的注册表,我的服务显示在

  

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\为MyService

不在这里:

  

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\事件日志\为MyService

我通过Visual Studio以管理员身份打开的 VS2015开发人员命令提示符安装Windows服务。

为什么?为什么不在eventlog中?为什么我在事件查看器中看不到它?

谢谢!

1 个答案:

答案 0 :(得分:-1)

使用以下代码,在创建之前检查源是否存在。在此处查看命名约定:https://msdn.microsoft.com/en-us/library/2awhba7a.aspx

string machineName = "MyRemoteServerName";
string source = "MyCustomApp";
string logName = "Application";//can be Application, System, or a custom log name.

if (EventLog.SourceExists(logName, machineName))
   return;

EventSourceCreationData eventSourceCreationData = new EventSourceCreationData(source, logName);

eventSourceCreationData.MachineName = machineName;

EventLog.CreateEventSource(eventSourceCreationData);

参考:https://msdn.microsoft.com/en-us/library/system.diagnostics.eventsourcecreationdata(v=vs.110).aspx