Jonathan Goodyear, MCSD, MCP, CLS
我正式宣布今天为“免费代码星期五“。今天我将向大家免费提供一个用ASP .NET实现的工具,它可以用来查看并清除Windows2000的事件日志。我把这个工具的源代码附在了文章的后面。在这之前,我将解释一下它的工作原理。你也可以下载这段源代码(包括VB和C#两个版本)。
当这页第一次被载入时,我们将创建并显示一个ASP .NET DropDownList服务器控件,它列出了本地服务器上所有的事件日志。我们首先通过调用EventLog类中的GetEventLogs方法得到所有的事件日志,再选择出属于本地服务器的事件日志,这样我们就得到了所需要的信息。当然,我们也可以指定网络上的另一台计算机,同样能得到它所用的事件日志。GetEventLogs方法将返回一个EventLog对象数组,这个数组已被我们绑定到了DropDownList服务器控件。
如果你从DropDownList控件中选择一个事件日志并点击“Get Log Entries“按钮,将触发getMessages_Click事件。这个事件调用我们定义的GetLogEntries函数,得到所指定的事件日志中所有事件的入口,并据此建立起EventLogEntry对象集。接着,这个对象集被绑定到服务器Repeater控件, 后者用一张HTML格式的表格显示每一个EventLogEntry对象的属性。最后,这个函数调用EventLog对象的Close方法结束这个事件。
还有一个“Clear Log Entries“按钮,它将触发clearLog_Click事件。在这个事件中,我们首先将连接到指定的事件日志,再调用EventLog对象的Clear方法,接着调用Close方法。最后,我们调用GetLogEntries函数来刷新服务器Repeater控件。请看屏幕截图
事件察看器的源代码 |下载源代码(包括VB和C#两个版本)
== event_viewer_cs.aspx ==
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<script language="C#" runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
EventLog[] elArray = EventLog.GetEventLogs(".");
logs.DataSource = elArray;
logs.DataTextField = "Log";
logs.DataValueField = "Log";
logs.DataBind();
}
}
protected void getMessages_Click(object sender, EventArgs e)
{
GetLogEntries();
}
protected void clearLog_Click(object sender, EventArgs e)
{
EventLog el = new EventLog();
el.MachineName = ".";
el.Log = logs.SelectedItem.ToString();
el.Clear();
el.Close();
GetLogEntries();
}
protected void GetLogEntries()
{
EventLog el = new EventLog();
el.MachineName = ".";
el.Log = logs.SelectedItem.ToString();
messages.DataSource = el.Entries;
messages.DataBind();
el.Close();
}
protected string GetEventTypeDesc(EventLogEntryType elet)
{
switch(elet)
{
case EventLogEntryType.Error:
return "Error";
break;
case EventLogEntryType.Warning:
return "Warning";
break;
case EventLogEntryType.Information:
return "Information";
break;
case EventLogEntryType.SuccessAudit:
return "Success Audit";
break;
default: //EventLogEntryType.FailureAudit
return "Failure Audit";
break;
}
}
</script>
<html>
<head>
<title>Event Log Viewer</title>
</head>
<body>
<form runat="server">
<asp:dropdownlist id="logs" runat="server" />
<asp:button id="getMessages" text="Get Log Entries"
onclick="getMessages_Click" runat="server" />
<asp:button id="clearLog" text="Clear Log Entries"
onclick="clearLog_Click" runat="server" />
</form>
<asp:repeater id="messages" runat="server">
<HeaderTemplate>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<th>Type</th>
<th>Date/Time</th>
<th>Source</th>
<th>Category</th>
<th>Event</th>
<th>User</th>
<th>Computer</th>
<th>Message</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#GetEventTypeDesc(
((EventLogEntry)Container.DataItem).EntryType)%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).TimeGenerated%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).Source%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).Category%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).EventID%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).UserName%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).MachineName%>
</td>
<td>
<%#((EventLogEntry)Container.DataItem).Message%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</body>
</html>
== event_viewer_vb.aspx ==
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Diagnostics" %>
<script language="VB" runat="server">
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim elArray() As EventLog = EventLog.GetEventLogs(".")
With logs
.DataSource = elArray
.DataTextField = "Log"
.DataValueField = "Log"
.DataBind()
End With
End If
End Sub
Protected Sub getMessages_Click(sender As Object, e As EventArgs)
GetLogEntries()
End Sub
Protected Sub clearLog_Click(sender As Object, e As EventArgs)
Dim el As EventLog = New EventLog()
el.MachineName = "."
el.Log = logs.SelectedItem.ToString()
el.Clear()
el.Close()
GetLogEntries()
End Sub
Protected Sub GetLogEntries()
Dim el As EventLog = New EventLog()
With el
.MachineName = "."
.Log = logs.SelectedItem.ToString()
End With
messages.DataSource = el.Entries
messages.DataBind()
End Sub
Protected Function GetEventTypeDesc(elet As EventLogEntryType) _
As String
Select Case elet
Case EventLogEntryType.Error
return "Error"
Case EventLogEntryType.Warning
return "Warning"
Case EventLogEntryType.Information
return "Information"
Case EventLogEntryType.SuccessAudit
return "Success Audit"
Case Else 'EventLogEntryType.FailureAudit
return "Failure Audit"
End Select
End Function
</script>
<html>
<head>
<title>Event Log Viewer</title>
</head>
<body>
<form runat="server">
<asp:dropdownlist id="logs" runat="server" />
<asp:button id="getMessages" text="Get Log Entries"
onclick="getMessages_Click" runat="server" />
<asp:button id="clearLog" text="Clear Log Entries"
onclick="clearLog_Click" runat="server" />
</form>
<asp:repeater id="messages" runat="server">
<HeaderTemplate>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<th>Type</th>
<th>Date/Time</th>
<th>Source</th>
<th>Category</th>
<th>Event</th>
<th>User</th>
<th>Computer</th>
<th>Message</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#GetEventTypeDesc(Container.DataItem.EntryType)%>
</td>
<td>
<%#Container.DataItem.TimeGenerated%>
</td>
<td>
<%#Container.DataItem.Source%>
</td>
<td>
<%#Container.DataItem.Category%>
</td>
<td>
<%#Container.DataItem.EventID%>
</td>
<td>
<%#Container.DataItem.UserName%>
</td>
<td>
<%#Container.DataItem.MachineName%>
</td>
<td>
<%#Container.DataItem.Message%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</body>
</html>
分享到:
相关推荐
ASP.NET Calendar如何给每天添加日志
《使用ASP.NET构建动态网站》课程目标: 1.了解 .NET 框架 2.会使用VS2008 进行ASP.NET 程序开发 3.掌握C# 语言的基本语法 4.掌握常用ASP.NET控件的使用 5.掌握使用ADO.NET 进行数据库程序开发 6.掌握ASP.NET常用...
使用ASP.NET技术开发网上书店(ASP.NET)第十章。有需要的可以下载
ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP...
Asp.net的TextBox回车触发事件.<script language="javascript">
asp.net 浏览事件日志、事件源和项! 很值得下载看看!资源免费,大家分享!!
天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp...
asp.net core 使用NLog打印日志到txt文件。 每个txt文件支持设置最大值,如设置为1M,则每个日志超过1M,会生成新的日志文件; 日志支持显示所在位置以及行号;
此程序使用较为笨拙的方法心事出Windows 2000/XP事件日志记录,且这些记录目前以一个图标样式显示出来
北大青鸟 Accp 5.0 电子课件 Y2 使用ASP.NET技术开发网上书店(ASP.NET) 共计13个压缩包,需要全部下载才能解压.
asp.net 键盘事件 keycode asc码 keycode控制按钮 js event.keycode 键盘事件
ASP.NET 3.5 MVC 架构与事件源代码第三部分实战篇
使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET技术开发网上书店使用ASP.NET...
在 W3School,我们提供完整的 ASP.NET 参考手册,其中包括内建对象和组件,以及它们的属性和方法。 ASP.NET 实例 ASP.NET 实例 一系列的 ASP.NET 实例。 内容目录 ASP.NET 简介 本章解释 ASP.NET 的概念。 ASP...
Asp.net 日志系统
ASP.NET委托和事件 ASP.NET委托和事件
asp.net Mvc项目中使用FastReport.NET的说明
北大青鸟 Accp 5.0 电子课件 Y2 使用ASP.NET技术开发网上书店(ASP.NET) 共计13个压缩包,需要全部下载才能解压.
asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程asp.net教程...