В моем приложении я хочу прочитать журнал событий приложения локальной системы.В настоящее время я использую следующий код
public partial class AppLog : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
System.Diagnostics.EventLog logInfo = new System.Diagnostics.EventLog();
logInfo.Log = "Application";
logInfo.MachineName = "."; // Local machine
string strImage = ""; // Icon for the event
Response.Write("<p>There are " + logInfo.Entries.Count + " entries in the System event log.</p>");
foreach (EventLogEntry entry in logInfo.Entries.Cast<EventLogEntry>().Reverse<EventLogEntry>())
{
switch (entry.EntryType)
{
case EventLogEntryType.Warning:
strImage = "images/icon_warning.PNG";
break;
case EventLogEntryType.Error:
strImage = "images/icon_error.PNG";
break;
default:
strImage = "images/icon_info.PNG";
break;
}
Response.Write("<img src=\"" + strImage + "\"> | ");
Response.Write(entry.TimeGenerated.ToString() + " | ");
Response.Write(entry.Message.ToString() + "<br>\r\n");
}
}
}
}
Я хочу показать только журнал, созданный ASP.NET. Я знаю, что могу отфильтровать его в цикле for-each. Но это занимает много времени, так какНужно перебрать весь журнал приложения. Есть ли способ отфильтровать его, прежде чем он перейдет в какую-либо итерацию ??чтобы сделать запрос, не знаю, действительно ли это улучшает производительность
var result = (from EventLogEntry elog in logInfo.Entries
where (elog.Source.ToString().Equals("ASP.NET 2.0.50727.0"))
orderby elog.TimeGenerated descending
select elog).ToList();
и переберите список результатов.