【问题标题】:Writing Events to Specific EventViewer将事件写入特定事件查看器
【发布时间】:2018-04-19 12:51:36
【问题描述】:

我已阅读有关 Windows 事件查看器的多篇文章和 SO 问题。但是,我仍然无法实现我的目标。我有一个 Windows 服务,我称之为“社交”。我想将此 Windows 服务中的信息写入 Windows 事件查看器。目前,我正在尝试以下方法:

var message = "Test Log";
using (var sw = File.AppendText(AppDomain.CurrentDomain.BaseDirectory + "test.txt"))
{
  sw.WriteLine(message);
}

var eventLog = new EventLog();
eventLog.Source = "Service";
eventLog.Log = "Social";

eventLog.BeginInit();
if (EventLog.SourceExists(eventLog.Source) == false)
{
  EventLog.CreateEventSource(eventLog.Source, "Social");
}
eventLog.EndInit();

eventLog.WriteEntry(message, EventLogEntryType.Information);

我添加了“test.txt”文件只是为了确保可以访问我的代码。该代码运行良好。但是,我从未在事件查看器中看到我的消息。事实上,我从未见过创建新的事件源。我期待转到 Windows 事件查看器并看到位于“事件查看器 -> 应用程序和服务日志 -> 社交媒体分析器”的新项目。但是,我没有看到。

值得注意的是,“社交”日志存在于事件查看器中。但是,没有任何内容被写入其中。日志被写入“应用程序”日志。这几乎就像 Windows 服务忽略了我想写入特定日志的事实。

我做错了什么?

【问题讨论】:

    标签: c# event-viewer


    【解决方案1】:
    eventLog.Log = "Application";
    ...
    EventLog.CreateEventSource(eventLog.Source, "Application");
    

    您正在将事件写入“Windows 日志”下的应用程序日志。事件应将 Source(列)指定为“Social Media Analyzer”。

    如果你想写入自定义日志,你需要类似的东西

    EventLog.CreateEventSource("MyEventSource", "Social Media Analyzer");
    

    【讨论】:

    • 感谢您的帮助。不过,我对您的回答感到有些困惑。在您的示例中,源是“Social Media Analyzer”还是“MyEventSource”?无论哪种情况,它仍然不适合我。不应该是EventLog.CreateEventSource("Service", "Social Media Analyzer");吗?
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多