您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用C#實現寫入系統日志,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
因為我不想使用自己寫文件,我的軟件是綠色的,所以把日志寫到 Windows 日志。
首先告訴大家什么是系統日志,請看下面
如果需要寫日志,需要管理員權限,如果沒有權限會出現下面異常
System.Security.SecurityException:“未找到源,但未能搜索某些或全部事件日志。 不可訪問的日志: Security
需要判斷當前是否已經存在日志,下面我來創建一個事件叫 “德熙”
if (EventLog.SourceExists("德熙")) { EventLog.CreateEventSource("德熙", "Application"); }
這里的 Application 就是寫到哪個,一般都是選 Application ,可以從圖片看到系統的有應用程序、安全、Setup、系統幾個日志,程序一般都是寫到程序
寫日志
寫日志就不用管理權限
寫入可以使用 WriteEntry ,需要傳入寫入的日志和內容
EventLog.WriteEntry("德熙", "有個不愿告訴你名稱的程序在這里寫字符串");
這個方法還有幾個重載,可以傳入日志類型,是成功、失敗還是其他。還可以傳入 id ,通過id 可以找到為什么需要寫日志,不過需要在自己定義,還可以添加附件,于是我就不需要自己寫文件日志。
另外給大家附上一個完整例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApp { /// <summary> /// 系統日志 /// </summary> public class PackSystemEventLog { /// <summary> /// 錯誤信息 /// </summary> private static string ErrorInfo { get; set; } /// <summary> /// 創建系統事件日志分類 /// </summary> /// <param name="eventSourceName">注冊事件源(比如說這個日志來源于某一個應用程序)</param> /// <param name="logName">日志名稱(事件列表顯示的名稱)</param> /// <returns></returns> public static bool CreateSystemEventLogCategory(string eventSourceName, string logName) { bool createResult = false; try { if (!EventLog.SourceExists(eventSourceName)) { EventLog.CreateEventSource(eventSourceName, logName); } createResult = true; } catch (Exception ex) { createResult = false; ErrorInfo = ex.Message; } return createResult; } /// <summary> /// 刪除系統事件日志分類 /// </summary> /// <param name="eventSource">EventName事件源</param> /// <returns></returns> public static bool RemoveSystemEventSourceCategory(string eventSource) { bool createResult = false; try { if (EventLog.SourceExists(eventSource)) { EventLog.DeleteEventSource(eventSource, "."); } createResult = true; } catch (Exception ex) { createResult = false; ErrorInfo = ex.Message; } return createResult; } /// <summary> /// 向系統日志中寫入日志 /// </summary> /// <param name="eventSource">事件源</param> /// <param name="msg">寫入日志信息</param> /// <param name="type">日志文本分類(警告、信息、錯誤)</param> /// <returns></returns> public static bool WriteSystemEventLog(string eventSource, string msg, EventLogEntryType type) { bool writeResult = false; try { if (!EventLog.SourceExists(eventSource)) { writeResult = false; ErrorInfo = "日志分類不存在!"; } else { EventLog.WriteEntry(eventSource, msg, type); writeResult = true; } } catch (Exception ex) { writeResult = false; ErrorInfo = ex.Message; } return writeResult; } /// <summary> /// 刪除事件源中logName(好像刪除了所有的該分類的日志) /// </summary> /// <param name="eventSource"></param> /// <param name="logName"></param> /// <returns></returns> public static bool RemoveSystemEventLog(string eventSource, string logName) { bool removeResult = false; try { if (!EventLog.SourceExists(eventSource)) { removeResult = false; ErrorInfo = "日志分類不存在!"; } else { EventLog.Delete(logName); removeResult = true; } } catch (Exception ex) { removeResult = false; ErrorInfo = ex.Message; } return removeResult; } /// <summary> /// 獲取錯誤信息 /// </summary> /// <returns></returns> public static string GetErrorMessage() { return ErrorInfo; } } }
以上是“如何使用C#實現寫入系統日志”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。