SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
ASP.NET MVC 偵測監控與 Log 記錄
使用 ELMAH 與 NLog
Kevin Tseng
http://kevintsengtw.blogspot.com
你~!是怎麼知道系統發生錯誤呢?
2
你~!是怎麼知道系統發生錯誤呢?
3
發生錯誤的原因...
客戶……
好一點,可以提供清楚資訊
普通的,會說剛剛做了什麼事
大部分,一問三不知或是…
4
發生錯誤的原因...
客戶……
好一點,可以提供清楚資訊
普通的,會說剛剛做了什麼事
大部分,一問三不知或是…
5
遇到錯誤時...開發人員好像都這樣反應
1. 在我的機器明明就可以動啊!
2. 一定是你的資料有問題。
3. 你到底是輸入了什麼?
4. 以前從來不會這樣啊!
5. 昨天明明會動的啊!
6. 一定是還沒更新到最新版本.
7. 怎麼可能~
8. 這一定是機器的問題。
9. 有 bug 是正常的!XD
6
程式開發人員掌握多少資訊?
7
• 如何得知錯誤的發生?
• 發生什麼樣的錯誤?
• 什麼地方發生錯誤?
• 錯誤發生的原因?
工欲善其事 必先利其器
程式開發人員的清醒時間是有限的,
不應該把這寶貴的時間浪費在無盡的錯誤上。
善用工具!更有效的掌握發生錯誤的原因
8
ELMAH
Error Logging Modules and Handlers for ASP.NET
 官網:http://code.google.com/p/elmah/
 ELMAH(錯誤日誌記錄模組和處理常式)是一個應用廣泛的
錯誤記錄的裝置。它可以添加到一個正在運行的
ASP.NET Web Application。
 應用在 ASP.NET WebForms 與 ASP.NET MVC 網站上。
ELMAH:Error Logging Modules and Handlers
10
 記錄系統中幾乎所有未處理的異常例外
 可遠端瀏覽這些由ELMAH所記錄下來的異常例外
 可遠端瀏覽異常例外記錄的完整細節,包含stack trace
 可知道系統錯誤黃頁的完整資訊
 可以透過電子郵件的方式寄發錯誤通知
 提供 RSS,由 RSS 可以獲取最近的 15 則記錄
ELMAH
在不必插入或是改變你的程式碼情況下,ELMAH提供以下的功能:
11
 Microsoft SQL Server
 Oracle
 SQLite (version 3) database file
 Microsoft Access
 Loose XML files
 RAM (in-memory) …… Default
 SQL Server Compact Edition
 MySQL
 PostgreSQL
ELMAH 支援的儲存裝置
12
ELMAH Dashboard
13
ELMAH Log Details
14
ELMAH Log Details
15
DEMO:使用 NuGet 為專案安裝 ELMAH
16
DEMO:將記錄資料存到 SQL Server
17
DEMO:關閉系統錯誤黃頁
18
customError 的重大資安弱點
<customErrors mode="On" defaultRedirect="~/Error/Unknown">
<error statusCode="404" redirect="~/Error/NotFound" />
<error statusCode="500" redirect="~/Error/internal" />
</customErrors>
黑暗執行緒 - 【重要提醒】請全面檢視並修改web.config customErrors!
http://blog.darkthread.net/post-2010-09-20-fix-customerrors-now.aspx
小朱® 的技術隨手寫 - [ASP.NET] ASP.NET 零時差攻擊 – POET 原理與防禦措施
http://www.dotblogs.com.tw/regionbbs/archive/2010/09/21/asp.net.poet.securi
ty.vulnerability.aspx
Will 保哥- ASP.NET 發現重大資安弱點影響範圍涵蓋 ASP.NET 1.0 ~ 4.0
http://blog.miniasp.com/post/2010/09/19/Security-Hack-Exposes-Forms-
Authentication-in-ASPNET.aspx
 安裝 ASP.NET 更新程式
黑暗執行緒 - 【重要消息】ASP.NET安全弱點更新程式出爐了!
http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/09/29
/asp-net-security-update.aspx
 處理錯誤,並回傳一致的HTTP狀態
如果是用 Global.asax 內的 Application_Error 事件
來捕捉 HTTP 錯誤時,所有錯誤都須回傳相同的HTTP狀態
 回傳錯誤頁時,將回應時間拉長
修正 customError 的重大資安弱點
修正 customError 的重大資安弱點
<!-- for ASP.NET 1.0-3.5 (non SP1) -->
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="~/Error" />
</system.web>
</configuration>
<!-- for ASP.NET 3.5 SP1 and 4.0 -->
<configuration>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite"
defaultRedirect="~/Error" />
</system.web>
</configuration>
DEMO:errorFiltering 排除 404 錯誤
NO!
22
Remember Me !
DEMO:無視 ELMAH 安全性設定的實例
23
ELMAH 的安全性
24
DEMO:ELMAH的安全性設定
25
NLog
Advance .NET Logging
 官網:http://nlog-project.org/
 ELMAH 是用來作為日誌記錄,主要工作是捕捉未處理的異常
(UnHandler Exception),所以有處理的異常就無法捕
捉(try…catch..)。
 NLog 讓我們可以在程式裡去處理異常時,依據異常的狀況
而給予不同的等級,NLog 除了處理記錄的儲存外還可以再
依據使用者所定義的等級做後續不同處理方式的操作。
NLog
27
 Files – single file or multiple, with automatic file naming and
archival
 Event Log – local or remote
 Database – store your logs in databases supported by .NET
 Network – using TCP, UDP, SOAP, MSMQ protocols
 Command-line console – including color coding of messages
 E-mail – you can receive emails whenever application errors
occur
 ASP.NET trace
 … and many more
NLog targets – 支援多種的儲存目標
28
 Trace:用於追蹤,可以在程式裡需要追蹤的地方將訊息以Trace傳出。
 Debug:用於開發,於開發時將一些需要特別關注的訊息以Debug傳出。
 Info:訊息,記錄不影響系統執行的訊息,通常會記錄登入登出或是資料的
建立刪除、傳輸等。
 Warn:警告,用於需要提示的訊息,例如庫存不足、貨物超賣、餘額即將不
足等。
 Error:錯誤,記錄系統實行所發生的錯誤,例如資料庫錯誤、遠端連線錯
誤、發生例外等。
 Fatal:致命,用來記錄會讓系統無法執行的錯誤,例如資料庫無法連線、
重要資料損毀等。
NLog rules – 記錄的等級
29
DEMO:使用 NuGet 安裝 NLog
30
DEMO:將 NLog 訊息儲存在 SQL Server
31
DEMO:設定並使用 Email 寄發 Log 訊息
32
Log Reporting Dashboard
Darren Weir
 提供一個整合 ELMAH,NLog,log4net,ASP.NET Health Monitoring
記錄訊息的平台
 ASP.NET MVC 2
 Log Reporting Dashboard for ASP.NET MVC
http://www.codeproject.com/Articles/104112/Log-Reporting-
Dashboard-for-ASP-NET-MVC
 Adding the Log Reporting Dashboard to your ASP.Net MVC
app (with MVC Turbine)
http://www.youtube.com/watch?v=Hicjp5MODpI
什麼是 Log Reporting Dashboard
34
DEMO:設定 ELMAH 與 NLog
35
DEMO:Log Reporting Dashboard
36
使用 ELMAH 記錄系統中的未處理異常資訊
允許遠端瀏覽 ELMAH 前必須做好安全性的設定
使用 NLog 記錄系統中任何處理訊息
使用 Log Reporting Dashboard 統一讀取 Log
資料
總結 - ASP.NET MVC 偵測監控與 Log 記錄
37
 ELMAH
http://code.google.com/p/elmah/
 NLog
http://nlog-project.org/
 Log Reporting Dashboard
http://mvclogging.codeplex.com/
http://www.codeproject.com/Articles/104112/Log-
Reporting-Dashboard-for-ASP-NET-MVC
http://dotnetdarren.wordpress.com/
參考資料
38
mrkt的程式學習筆記 -系統記錄與效能監測
39
http://kevintsengtw.blogspot.tw/p/blog-page_30.html
我敢跟妳賭,十年後 ……
我連 LOG 是什麼都不知道,照樣活得很好。
謝謝各位 !
41
 我們熱愛 Web 開發技術,並樂於分享 ASP.NET MVC 開發心得
 已成功建立數個灘頭堡的經驗,深知 MVC 開發模式條理分明,有
利於分工與管理,想推薦給尚未了解的開發人員
 不願意看到 MVC 叫好不叫座,我們樂意透過經驗交換來破除導入
障礙
42
為何組成 twMVC
 A quite simple http://mvc.tw/
 But, it’s still under-construction now 
43
twMVC 資訊分享
 每週小型聚會,不特定主題
 固定於每週四 19:30-21:30,不改時間,逢國定假日暫停一次
 議程不會提前排定,以當天參加者最近的心得分享為主
 舉辦不定期研討會
44
twMVC 做哪些事推廣 ASP.NET MVC 技術
 預先設定主題的中大型會議,主題提前於 mvc.tw 上公告
 原則上一個月排定一次,因場地關係會設定報名人數上限
45
twMVC 不定期研討會
46
本次線上問卷
http://www.accupass.com/Question/522076701012640

Más contenido relacionado

Más de twMVC

Azure mobileservice
Azure mobileservice Azure mobileservice
Azure mobileservice twMVC
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18twMVC
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18twMVC
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 twMVC
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
TypeScript-twmvc#16
TypeScript-twmvc#16TypeScript-twmvc#16
TypeScript-twmvc#16twMVC
 
前端工程師與室內裝修師傅的相似之處-twMVC#16
前端工程師與室內裝修師傅的相似之處-twMVC#16前端工程師與室內裝修師傅的相似之處-twMVC#16
前端工程師與室內裝修師傅的相似之處-twMVC#16twMVC
 
開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15twMVC
 
動手打造 application framework-twMVC#15
動手打造 application framework-twMVC#15動手打造 application framework-twMVC#15
動手打造 application framework-twMVC#15twMVC
 
樞紐分析表之數據分析與統計-twMV#C14
樞紐分析表之數據分析與統計-twMV#C14樞紐分析表之數據分析與統計-twMV#C14
樞紐分析表之數據分析與統計-twMV#C14twMVC
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14twMVC
 
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13twMVC
 
RWD不是你想的那樣 tw mvc#13
RWD不是你想的那樣 tw mvc#13RWD不是你想的那樣 tw mvc#13
RWD不是你想的那樣 tw mvc#13twMVC
 
ASP.NET MVC 善用網路資源快速完打造網站
ASP.NET MVC 善用網路資源快速完打造網站ASP.NET MVC 善用網路資源快速完打造網站
ASP.NET MVC 善用網路資源快速完打造網站twMVC
 
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12twMVC
 
Vs2013新功能介紹 twMVC#11
Vs2013新功能介紹 twMVC#11Vs2013新功能介紹 twMVC#11
Vs2013新功能介紹 twMVC#11twMVC
 
架構設計入門 twMVC#11
架構設計入門 twMVC#11架構設計入門 twMVC#11
架構設計入門 twMVC#11twMVC
 
ASP.NET MVC Model 的設計與使用 twMVC#10
ASP.NET MVC Model 的設計與使用 twMVC#10ASP.NET MVC Model 的設計與使用 twMVC#10
ASP.NET MVC Model 的設計與使用 twMVC#10twMVC
 
Knockout 從零開始,實戰教學 twMVC#10
Knockout 從零開始,實戰教學 twMVC#10Knockout 從零開始,實戰教學 twMVC#10
Knockout 從零開始,實戰教學 twMVC#10twMVC
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日twMVC
 

Más de twMVC (20)

Azure mobileservice
Azure mobileservice Azure mobileservice
Azure mobileservice
 
一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18一小時可以打造什麼服務Plus twMVC#18
一小時可以打造什麼服務Plus twMVC#18
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
TypeScript-twmvc#16
TypeScript-twmvc#16TypeScript-twmvc#16
TypeScript-twmvc#16
 
前端工程師與室內裝修師傅的相似之處-twMVC#16
前端工程師與室內裝修師傅的相似之處-twMVC#16前端工程師與室內裝修師傅的相似之處-twMVC#16
前端工程師與室內裝修師傅的相似之處-twMVC#16
 
開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15
 
動手打造 application framework-twMVC#15
動手打造 application framework-twMVC#15動手打造 application framework-twMVC#15
動手打造 application framework-twMVC#15
 
樞紐分析表之數據分析與統計-twMV#C14
樞紐分析表之數據分析與統計-twMV#C14樞紐分析表之數據分析與統計-twMV#C14
樞紐分析表之數據分析與統計-twMV#C14
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14
 
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
 
RWD不是你想的那樣 tw mvc#13
RWD不是你想的那樣 tw mvc#13RWD不是你想的那樣 tw mvc#13
RWD不是你想的那樣 tw mvc#13
 
ASP.NET MVC 善用網路資源快速完打造網站
ASP.NET MVC 善用網路資源快速完打造網站ASP.NET MVC 善用網路資源快速完打造網站
ASP.NET MVC 善用網路資源快速完打造網站
 
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12
 
Vs2013新功能介紹 twMVC#11
Vs2013新功能介紹 twMVC#11Vs2013新功能介紹 twMVC#11
Vs2013新功能介紹 twMVC#11
 
架構設計入門 twMVC#11
架構設計入門 twMVC#11架構設計入門 twMVC#11
架構設計入門 twMVC#11
 
ASP.NET MVC Model 的設計與使用 twMVC#10
ASP.NET MVC Model 的設計與使用 twMVC#10ASP.NET MVC Model 的設計與使用 twMVC#10
ASP.NET MVC Model 的設計與使用 twMVC#10
 
Knockout 從零開始,實戰教學 twMVC#10
Knockout 從零開始,實戰教學 twMVC#10Knockout 從零開始,實戰教學 twMVC#10
Knockout 從零開始,實戰教學 twMVC#10
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日
 

Asp.net mvc 偵錯與監控 - twMVC#2