我有一个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,在某些事件中,我将信息写入我的日志文件。我如何访问此信息(调试所需)。
答案 0 :(得分:1)
转到:
组件服务&gt;事件查看器&gt; <应用和服务> 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);
}