加速EventLogEntry.Message

时间:2011-06-14 23:19:22

标签: .net event-log

使用System.Diagnostics命名空间从服务器读取应用程序日志时,我遇到了一个有趣的问题。我正在将~16,000个条目读入另一个文件供以后使用。例如:

string logType = "Application";

EventLog ev = new EventLog(logType, "server name");
int LastLogToShow = ev.Entries.Count;
if ( LastLogToShow <= 0 )
Console.WriteLine("No Event Logs in the Log :" + logType);

int i;
for ( i = LastLogToShow - 1; i>= 0 ; i--)
{
     EventLogEntry CurrentEntry = ev.Entries[i];
     Console.WriteLine("Event ID : " + CurrentEntry.EventID);
     Console.WriteLine("Entry Type : " + CurrentEntry.EntryType.ToString());
     Console.WriteLine("Message : " + CurrentEntry.Message + "\n");
}
ev.Close();

在我尝试编写CurrentEntry.Message之前,一切似乎都运行正常。此时整个日志从大约一秒钟的运行变为每100个条目接管一秒钟。有没有人有任何创造性的解决方案来加速这一点,或者欺骗方法每次都不检查正确的dll?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您的问题与DLL检查无关,而是简单的文本呈现。事件ID和条目类型很小。它们可以快速写出来。消息是 BIG 并且通常包含大量文本,因此屏幕渲染需要很长时间。

建议:创建一个StringBuilder并将所有文本追加到其中而不是重复的Console.WriteLines - 然后在最后,执行一个Console.WriteLine(myStringBuilder.ToStrion());

这可能会有所帮助。