Windows EventLog,以毫秒精度写入日志

问题描述 投票:1回答:2

在我的应用程序中,我使用EventLog(因为我正在使用钱,所以我需要记录所有可能发生的事件)。 EventLog工作得很好,但问题是,我的消息来得太快了(1秒内我可以得到3-5个事件)。 在那些消息之后,我无法在EventLog中正确排序它们(我需要按时间排序)。问题是:如果1s发生5事件,那么5事件在EventLog中“随机”排序,因为它只记录YYYY / MM / DD hh / mm / ss,但我需要添加毫秒。是否有办法实现这一目标?

我的基本代码如何记录事件:

    if (!EventLog.SourceExists(EventLogName))
        EventLog.CreateEventSource(ex.Message, EventLogName);
    EventLog log = new EventLog();
    log.Source = EventLogName;
    log.WriteEntry(ex.Message, EventLogEntryType.Error);

WriteEntry中最精确的属性是: -string源码 -string消息 -EventLogEntryType类型 -int eventID - 短期类别 -byte [] rawData

但是没有什么会存储的时间。有没有办法如何用毫秒精度在基本的Windows EventLog中编写?

c# time event-log
2个回答
1
投票

为什么不能使用第三方库?您是否与禁止使用“非Microsoft”库的人讨论过这个问题,假设这是限制。拥有这样的全面限制是愚蠢的。

你不能简单地获得任何其他时间戳,但你可以尝试一些黑客。显而易见的是采用毫秒精度部分(未记录在日志中)并将其用作EventID-它的特定应用程序,因此您可以按照自己喜欢的方式使用它。如果您每秒只有几个事件,那么对事件日志日期/时间进行排序应该没问题,您可以直观地确定事件的顺序。

如果它太多,那么您可以将事件日志导出到Excel或其他内容并按两列排序。

显然,您也可以对源进行过滤,以减少箔条。

您可能也想查看Windows high speed logging: ETW in C#/.NET using System.Diagnostics.Tracing.EventSource ,它可能有所帮助,但如果您只是要登录EventLog则不行。

基本上,如果您的要求是毫秒精度,那么您不应该使用Windows事件日志,因为它不提供。正如已经指出的那样,有许多日志解决方案可以满足您的需求。


0
投票

鉴于它是记录时间戳的事件日志,它看起来不像你可以获得毫秒精度。

使用像log4net这样的东西写一个标准的基于文本的日志会不会更好? log4net写入的日志确实具有毫秒级的精度以及许多其他内容,例如写入条目的类的标识。如果/当你需要扩大规模时,它可能会更快。

© www.soinside.com 2019 - 2024. All rights reserved.