使用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?
谢谢!
答案 0 :(得分:1)
我认为您的问题与DLL检查无关,而是简单的文本呈现。事件ID和条目类型很小。它们可以快速写出来。消息是 BIG 并且通常包含大量文本,因此屏幕渲染需要很长时间。
建议:创建一个StringBuilder并将所有文本追加到其中而不是重复的Console.WriteLines - 然后在最后,执行一个Console.WriteLine(myStringBuilder.ToStrion());
这可能会有所帮助。