C#讀寫系統日誌

來源:互聯網
上載者:User

//整理於2005-10-5

//flashicp

作為商務應用程式,尤其是WEB下的應用程式,安全問題是第一位的。這裡所說的安全性組件括兩個方面,一是系統本身的安全,也就是系統本身的強壯性,另一方面是系統在使用時,使用者的誤操作,或惡意破壞時引起的安全問題。
  
  本文並不想介紹系統全方面的問題,如果你有興趣的可以去查閱相關資料。這裡,我想要介紹的是如何在系統發生錯誤,或者遭到破壞時,如何把相關資訊記錄下來。比如,當有人試圖非法登入的時候,如何記錄下時間,他所在機器的IP等一系列資訊,以便管理員採取相關的措施。
  
  有兩種方式可供選擇,一是將相關資訊寫入指定的資料庫的表中。另一種方法就是寫入系統記錄檔裡。將資訊寫入資料庫,在.NET環境下,需要執行個體化許多個物件,如SqlConnection ,SqlCommand 等,還要進行資料庫的串連等工作,僅僅是為了插入一條記錄。相對來說,這種方式比較消耗系統資源,如果,系統本身就沒有資料庫支援,那麼這種方法根本不可行。本文要介紹的是第二種方式,將資訊寫入系統日誌。
  
  在.NET的System.Diagnostics命名空間裡提供了幾個類,專門用來作業系統日誌。
  
  一:向日誌裡寫入資訊
  
  首先,我們要引用System.Diagnostics命名空間。然後,我們來執行個體化EventLog類,我們的大部分工作都是用這個類來完成。
  
  EventLog sample=new EventLog();
  
  該類提供的WriteEntry方法,讓我們將資訊寫入系統日誌,一般是寫入應用程式記錄檔裡。方法的定義如下
  
  public void WriteEntry(
   string source,
   string message,
   EventLogEntryType type,
   Int eventID,
   short category,
   byte[] rawData
  );
  
  例如:
  
  EventLog.WriteEntr("sourcei","message",EventLogEntryType.Warning ,11,21);
  
  介紹一下該方法參數的含意。
  
  1) Source 表示記錄的來源,字串型
  
  2) Message 表示記錄的相關資訊,字串型
  
  3) Type 表示記錄類型,是枚舉類型,有以下選項
  
  ü Error 錯誤
  
  ü Warning 警告
  
  ü Information 資訊
  
  ü SuccessAudit 成功審核
  
  ü FailureAudit 失敗審核
  
  4) EventID 表示事件ID號,整型
  
  5) Category 表示事件的分類,短整型
  
  6) RawData 記錄和事件相關的二進位資訊,位元組數組
  
  試一下,在事件檢視器的應用程式記錄檔裡,你會看到剛插入的記錄。
  
  
  
  二:從日誌裡讀取資訊
  
  從日誌裡讀取資訊,我們需要使用的是EventLog的Entries方法,該方法返回的是一個集合類EventLogEntryCollection的執行個體,在該集合類中儲存的是EventLogEntry類的執行個體,該類中儲存了日誌裡各記錄的資訊。我們可以用以下的程式來返回日誌資訊。
  
  首先,我們要執行個體化一個EventLog類
  
  EventLog sample=new EventLog();
  
  和寫入資訊不同的是,我們在這需要指定我們從那個日誌裡讀記錄
  
  sample.Log="Application";
  
  我們指定的是應用程式記錄檔,當然,我們可以選擇別的日誌,比如系統日誌System,還有安全日誌Security
  
  聲明一個EventLogEntryCollection類並給它賦值
  
  EventLogEntryCollection myCollection=sample.Entries;
  
  這樣,應用程式記錄檔裡的資訊都存放在了myCollection對象中,我們可以來讀取其中的資訊。
  
  我們用foreach語句來訪問myCollection中的所有EventLogEntry對象
  
  
  
  
  
  foreach(EventLogEntry test in myCollection)
  
   {
  
   Console.WriteLine(test.Message,test.Source,test.EventID);
  
   }
  
  這樣,你就可以在螢幕上看到日誌裡的一些資訊,當然,你還可以訪問EventLogEntry對象的其他屬性來擷取你所需要的資訊。
  
  本文只是簡要介紹了一下如何讀寫系統的記錄檔的方法,有很多細節並沒有詳細介紹,比如,如何讀寫別人機器的日誌,如何出錯處理等,有興趣的化可以參考MSDN

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.