ReadyGo!技术成就梦想 >> .Net技术 >> ASP.NET >> 使用asp.net 示事件日

使用asp.net 示事件日

ReadyGo!技术成就梦想 www.efish.cn efish 2007-10-25 10:11:42

在 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 machine string strimage = ""; // icon for the event response.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 + "\">&nbsp;|&nbsp;"); response.write(entry.timegenerated.tostring() + "&nbsp;|&nbsp;"); response.write(entry.source + "&nbsp;|&nbsp;"); 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 中 ─ 但是我們只用到欄位,如下複製圖像所示:

這樣的

相关文章
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想