如何將日誌記錄到 Windows事件日誌 中

2021-10-16 12:50:29 字數 2968 閱讀 4273

每當出現一些未捕獲異常時,作業系統都會將異常資訊寫入到windows 事件日誌中,可以通過windows 事件檢視器檢視,如下圖:

這篇文章將會討論如何使用程式設計的方式將日誌記錄到 windows 事件日誌 中。

要想在 .net core 中記錄資料到 windows 事件日誌中,可以用 nuget 安裝一下microsoft.extensions.logging.eventlog包,用 visual studio 中的nuget package manager視覺化面板 或者 使用nuget package manager console命令列介面都可以,輸入命令如下:

install-package microsoft.extensions.logging.eventlog
要想將日誌寫入 windows 事件日誌中,可以使用如下**:

為了能夠實現清空所有 windows 日誌,可以使用如下**:

eventlog eventlog = new eventlog();

eventlog.source = "myeventlogsource";

eventlog.clear();

clear 是清空所有的 windows 事件日誌,那如何清除某乙個類別的日誌呢? 比如說:myeventlogtarget,修改**如下:

if (eventlog.exists("myeventlogtarget"))

可以使用 foreach 迭代 entries 來獲取所有的日誌記錄。

eventlog eventlog = new eventlog();

eventlog.log = "myeventlogtarget";

foreach (eventlogentry entry in eventlog.entries)

要想使用 nlog 將日誌記錄到 windows事件日誌 中,你需要用 nuget 安裝一下nlog.windowseventlog,這個包封裝了連線 eventlog 錯綜複雜的細節,所以你只需要像平時用 nlog 一樣的操作即可。

下面的介面方法用於記錄不同級別的日誌 (information, warning, debug, or error)

public inte***ce ilogmanager

接下來,從 ilogmanager 介面上派生乙個 nlogmanager 類,**如下:

public class nlogmanager : ilogmanager

public void logerror(string message)

public void loginformation(string message)

public void logwarning(string message)

}

public void logerror(string message)

請注意,上面我建立了乙個名為eventlogtarget的 eventlog,然後在 logeventinfo 的建構函式中傳遞 log級別,logger的名字 以及 需要記錄的 log 資訊。

為了能夠配置 nlog 以程式設計的方式 通過 eventlog 記錄日誌,可以使用如下**。

var config = new nlog.config.loggingconfiguration();

var logeventlog = new nlog.targets.eventlogtarget("eventlogtarget");

config.addrule(nlog.loglevel.info, nlog.loglevel.error, logeventlog);

nlog.logmanager.configuration = config;

public class nlogmanager : ilogmanager

public void logerror(string message)

public void loginformation(string message)

public void logwarning(string message)

}

為了能夠在 controller 中使用 nlogmanager,還需要在 startup 下的 configureservices 方法中進行注入,**如下:

windows事件日誌 通常用於記錄 系統事件,網路流量和諸如安全,效能相關的資訊 等等,你也可以將應用程式的日誌記錄到 windows事件日誌中,通常來說,如果你的程式僅僅是跑在 windows 上,那麼將應用程式資訊記錄到 windows事件日誌 中是乙個非常不錯的選擇。

使用redis將日誌記錄到日誌伺服器

在web伺服器上 using servicestack.redis using system using system.collections.generic using system.linq using system.web using system.web.mvc namespace czbk...

將錯誤資訊記錄到日誌檔案

自定義乙個函式,可以將錯誤資訊記錄到檔案,如下 記錄第三方平台操作的錯誤資訊 author yj 2016 05 19 param unknown msg 要記錄的錯誤資訊 param string destination 存放錯誤日誌的目錄 function writelog msg,destin...

如何將syslogng的日誌寫入MySQL資料庫

在 使用syslog ng搭建日誌伺服器 中已經講了如何將syslog ng配置為中心日誌伺服器,下面介紹如何將syslogng的日誌寫入mysql資料庫,系統 gentoo 2007 1 修改 etc syslog ng syslog ng.conf,新增 source s remote dest...