在ASP.NET MVC中使用Log4Net進行多種HttpCode日誌的記錄
參考了以下兩篇文章
總體設計
錯誤型別 |
錯誤入口 |
處理方法 |
Controller中的錯誤 (已經考慮到的) |
在try-catch中記錄日誌 |
顯示HttpCode500錯誤檢視 |
Controller中的錯誤 (未考慮到的) |
在繼承HandleErrorAttribute的類中記錄日誌 |
顯示HttpCode500錯誤檢視 |
url地址錯誤 |
在全域性處理Application_Start方法中處理 |
顯示HttpCode404錯誤檢視 |
其他錯誤 |
在全域性處理Application_Start方法中處理 |
顯示其他錯誤檢視 |
第一步:在MVC中使用Log4Net記錄日誌:
1. 建立log4net.config.xml檔案,配置Log4Net的節點。
2. 在Global.asax檔案Application_Start()方法中新增業務功能,該業務來讀取Log4Net配置檔案內容,從而將配置檔案與我們的應用程式聯絡起來(Log4Net注入到我們的應用程式中)。
3. 在Common下新建一個類ErrRecorder,初始化ILog,進行日誌記錄。以後凡是程式中想使用日誌記錄時,直接在try-catch中使用這個類下的WriteError()方法。
這種方法完全是自定義記錄日誌,所有錯誤的捕捉都是自己try-catch的。第二步:
1. 自己建一個Attribute類,繼承錯誤異常過濾器HandleErrorAttribute。
重寫方法OnException(ExceptionContext filterContext)。 filterContext就是異常上下文 在這個方法中捕獲異常資訊。
2. 新增到全域性過濾器中,filters.Add(new HandleErrorAttribute()) 寫我們自己的異常處理資訊屬性
3. 在Global.asax全域性檔案的Application_Start()方法中使用Log4Net進行日誌記錄(Log4Net是執行緒安全的)
第三步:
在Application_Start中新增Application_Error事件。這個事件是在OnException()事件執行完成之後執行的,可以用來處理Filter遺漏的事件,如沒有找到網頁的404錯誤等