WEB开发网
开发学院WEB开发ASP.NET 使用ASP.NET 显示事件日誌纪录 阅读

使用ASP.NET 显示事件日誌纪录

 2007-12-15 09:35:16 来源:WEB开发网   
核心提示:在 Windows 2000 (或 NT) 的事件日誌对管理者来说可说是最重要的讯息来源,因为所有的发生的事件都会纪录在那裡 ─ 从成功到严重性的失败,使用ASP.NET 显示事件日誌纪录,由於是如此的重要,那麽要是能够透过 web 来使用,就这样打开了事件日誌,然後分配 Entries (纪录) 作为 DataGri

在 Windows 2000 (或 NT) 的事件日誌对管理者来说可说是最重要的讯息来源,因为所有的发生的事件都会纪录在那裡 ─ 从成功到严重性的失败。由於是如此的重要,那麽要是能够透过 web 来使用,可不是更能突显吗?

大家应该对事件检视器不会陌生,在这篇文章我将说明如何使用 ASP.NET 和 .NET Framework SDK 能够完美地仿效列出日誌。为了让读者作为练习,我先保留对於网页呈现详细纪录细节的建置。

使用这篇文章的原始码在你的 Webserver 上必须安装 Microsoft .NET Framework SDK。 同时我也假设读者对 C# 程式有一定程度的认识。

暴力手段法

为了能更迅速且又不是那麽的乾净俐落手段,我们可以好好利用过去对 ASP 的知识来产生一系列事件。(即使是 table,虽然这个範例並不是要做 table)。程式的名称也就是这个玩意的名称: simple.aspx.

<% @Page Language="C#" %><% @Import Namespace="System.Diagnostics" %><%EventLog aLog = new EventLog();aLog.Log = "System";aLog.MachineName = ".";  // Local machinestring strImage = "";  // Icon for the eventResponse.Write("<p>There are  " + aLog.Entries.Count +          " entries in the System event log.</p>");   foreach (EventLogEntry entry in aLog.Entries) {  switch (entry.EntryType)  {    case EventLogEntryType.Warning:      strImage = "warning.png";      break;    case EventLogEntryType.Error:      strImage = "error.png";      break;    default:      strImage = "info.png";      break;  }  Response.Write("<img src=\"" + strImage + "\"> | ");  Response.Write(entry.TimeGenerated.ToString() + " | ");  Response.Write(entry.Source + " | ");  Response.Write(entry.EventID.ToString() + "<br>\r\n");}%>

事件日誌的类别可以在这个名称空间找到 System.Diagnostics,必须将它放在网页开始的地方。打开日誌本身就是很直接: 产生新的 EventLog 物件, 指明 LogMachineName ("." 是本地端的机器)。然後我们就準备读取事件日誌。

我们使用 foreach 迴圈来完成这个工作。为使呈现不会那麽的缺乏创意,我在每一个纪录钱都放一个正确的图案,列出的纪录与检视器一般的顺序相反: 过去的纪录会列为最优先。

使用 DataGrid 更完美

在 ASP.NET 中有许多的创新,特别是在资料的展示,而且更棒的是资料並不一定要来自资料库中。对 DataGrid Web Control 也是如此,也就如其名称一样,从资料中产生 table (grid)。唯一需求视资料来源必须是支援 ICollection 介面 ─ 也就是使用 EventLog 的集合 Entries

以下的原始码 (speccolsonly.aspx) 说明了使用 DataGrid 是如此的简单:

<% @Page Language="C#" %><% @Import Namespace="System.Diagnostics" %><script language="C#" runat="server">void Page_Load(Object sender, EventArgs e) {  EventLog aLog = new EventLog();  aLog.Log = "System";  aLog.MachineName = ".";    LogGrid.DataSource = aLog.Entries;  LogGrid.DataBind();}</script>

DataGrid 控制项 (接下来的程式) 只包含格式化的指令,没有其他。Grid 是藉由 Page_Load 事件来填补进去,就这样打开了事件日誌,然後分配 Entries (纪录) 作为 DataGrid 的 DataSource 属性。随着呼叫 DataBind 资料就湧进了 table 中 ─ 但是我们只用到栏位,如下複制图像所示:

这样的限制完成工作都是在 DataGrid 本身的标籤 (

1 2 3  下一页

Tags:使用 ASP NET

编辑录入:coldstar [复制链接] [打 印]
赞助商链接