ASP.NET MVC 偵測監控與 Log 記錄
使用 ELMAH 與 NLog
Kevin Tseng
http://kevintsengtw.blogspot.com
你~!是怎麼知道系統發生錯誤呢?
2
你~!是怎麼知道系統發生錯誤呢?
3
發生錯誤的原因...
客戶……
好一點,可以提供清楚資訊
普通的,會說剛剛做了什麼事
大部分,一問三不知或是…
4
發生錯誤的原因...
客戶……
好一點,可以提供清楚資訊
普通的,會說剛剛做了什麼事
大部分,一問三不知或是…
5
遇到錯誤時...開發人員好像都這樣反應
1. 在我的機器明明就可以動啊!
2. 一定是你的資料有問題。
3. 你到底是輸入了什麼?
4. 以前從來不會這樣啊!
5. 昨天明明會動的啊!
6. 一定是還沒更新到最新版本.
7. 怎麼可能~
8. ...
程式開發人員掌握多少資訊?
7
• 如何得知錯誤的發生?
• 發生什麼樣的錯誤?
• 什麼地方發生錯誤?
• 錯誤發生的原因?
工欲善其事 必先利其器
程式開發人員的清醒時間是有限的,
不應該把這寶貴的時間浪費在無盡的錯誤上。
善用工具!更有效的掌握發生錯誤的原因
8
ELMAH
Error Logging Modules and Handlers for ASP.NET
 官網:http://code.google.com/p/elmah/
 ELMAH(錯誤日誌記錄模組和處理常式)是一個應用廣泛的
錯誤記錄的裝置。它可以添加到一個正在運行的
ASP.NET Web Application。
 應用在 A...
 記錄系統中幾乎所有未處理的異常例外
 可遠端瀏覽這些由ELMAH所記錄下來的異常例外
 可遠端瀏覽異常例外記錄的完整細節,包含stack trace
 可知道系統錯誤黃頁的完整資訊
 可以透過電子郵件的方式寄發錯誤通知
 提供 R...
 Microsoft SQL Server
 Oracle
 SQLite (version 3) database file
 Microsoft Access
 Loose XML files
 RAM (in-memory) ...
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/N...
 安裝 ASP.NET 更新程式
黑暗執行緒 - 【重要消息】ASP.NET安全弱點更新程式出爐了!
http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/09/29
/asp-...
修正 customError 的重大資安弱點
<!-- for ASP.NET 1.0-3.5 (non SP1) -->
<configuration>
<system.web>
<customErrors mode="On" default...
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 讓我...
 Files – single file or multiple, with automatic file naming and
archival
 Event Log – local or remote
 Database – stor...
 Trace:用於追蹤,可以在程式裡需要追蹤的地方將訊息以Trace傳出。
 Debug:用於開發,於開發時將一些需要特別關注的訊息以Debug傳出。
 Info:訊息,記錄不影響系統執行的訊息,通常會記錄登入登出或是資料的
建立刪除、傳...
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
ht...
DEMO:設定 ELMAH 與 NLog
35
DEMO:Log Reporting Dashboard
36
使用 ELMAH 記錄系統中的未處理異常資訊
允許遠端瀏覽 ELMAH 前必須做好安全性的設定
使用 NLog 記錄系統中任何處理訊息
使用 Log Reporting Dashboard 統一讀取 Log
資料
總結 - ASP.NE...
 ELMAH
http://code.google.com/p/elmah/
 NLog
http://nlog-project.org/
 Log Reporting Dashboard
http://mvclogging.codepl...
mrkt的程式學習筆記 -系統記錄與效能監測
39
http://kevintsengtw.blogspot.tw/p/blog-page_30.html
我敢跟妳賭,十年後 ……
我連 LOG 是什麼都不知道,照樣活得很好。
謝謝各位 !
41
 我們熱愛 Web 開發技術,並樂於分享 ASP.NET MVC 開發心得
 已成功建立數個灘頭堡的經驗,深知 MVC 開發模式條理分明,有
利於分工與管理,想推薦給尚未了解的開發人員
 不願意看到 MVC 叫好不叫座,我們樂意透過經驗交...
 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
Upcoming SlideShare
Loading in...5
×

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

737

Published on


程式開發人員如何確切掌握錯誤的發生與錯誤發生的原因,

講解如何為 ASP.NET MVC 網站增加偵測監控以及 Log 記錄的功能。

2012-06-14

http://mvc.tw

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
737
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
36
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. ASP.NET MVC 偵測監控與 Log 記錄 使用 ELMAH 與 NLog Kevin Tseng http://kevintsengtw.blogspot.com
  2. 2. 你~!是怎麼知道系統發生錯誤呢? 2
  3. 3. 你~!是怎麼知道系統發生錯誤呢? 3
  4. 4. 發生錯誤的原因... 客戶…… 好一點,可以提供清楚資訊 普通的,會說剛剛做了什麼事 大部分,一問三不知或是… 4
  5. 5. 發生錯誤的原因... 客戶…… 好一點,可以提供清楚資訊 普通的,會說剛剛做了什麼事 大部分,一問三不知或是… 5
  6. 6. 遇到錯誤時...開發人員好像都這樣反應 1. 在我的機器明明就可以動啊! 2. 一定是你的資料有問題。 3. 你到底是輸入了什麼? 4. 以前從來不會這樣啊! 5. 昨天明明會動的啊! 6. 一定是還沒更新到最新版本. 7. 怎麼可能~ 8. 這一定是機器的問題。 9. 有 bug 是正常的!XD 6
  7. 7. 程式開發人員掌握多少資訊? 7 • 如何得知錯誤的發生? • 發生什麼樣的錯誤? • 什麼地方發生錯誤? • 錯誤發生的原因?
  8. 8. 工欲善其事 必先利其器 程式開發人員的清醒時間是有限的, 不應該把這寶貴的時間浪費在無盡的錯誤上。 善用工具!更有效的掌握發生錯誤的原因 8
  9. 9. ELMAH Error Logging Modules and Handlers for ASP.NET
  10. 10.  官網:http://code.google.com/p/elmah/  ELMAH(錯誤日誌記錄模組和處理常式)是一個應用廣泛的 錯誤記錄的裝置。它可以添加到一個正在運行的 ASP.NET Web Application。  應用在 ASP.NET WebForms 與 ASP.NET MVC 網站上。 ELMAH:Error Logging Modules and Handlers 10
  11. 11.  記錄系統中幾乎所有未處理的異常例外  可遠端瀏覽這些由ELMAH所記錄下來的異常例外  可遠端瀏覽異常例外記錄的完整細節,包含stack trace  可知道系統錯誤黃頁的完整資訊  可以透過電子郵件的方式寄發錯誤通知  提供 RSS,由 RSS 可以獲取最近的 15 則記錄 ELMAH 在不必插入或是改變你的程式碼情況下,ELMAH提供以下的功能: 11
  12. 12.  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
  13. 13. ELMAH Dashboard 13
  14. 14. ELMAH Log Details 14
  15. 15. ELMAH Log Details 15
  16. 16. DEMO:使用 NuGet 為專案安裝 ELMAH 16
  17. 17. DEMO:將記錄資料存到 SQL Server 17
  18. 18. DEMO:關閉系統錯誤黃頁 18
  19. 19. 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
  20. 20.  安裝 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 的重大資安弱點
  21. 21. 修正 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>
  22. 22. DEMO:errorFiltering 排除 404 錯誤 NO! 22 Remember Me !
  23. 23. DEMO:無視 ELMAH 安全性設定的實例 23
  24. 24. ELMAH 的安全性 24
  25. 25. DEMO:ELMAH的安全性設定 25
  26. 26. NLog Advance .NET Logging
  27. 27.  官網:http://nlog-project.org/  ELMAH 是用來作為日誌記錄,主要工作是捕捉未處理的異常 (UnHandler Exception),所以有處理的異常就無法捕 捉(try…catch..)。  NLog 讓我們可以在程式裡去處理異常時,依據異常的狀況 而給予不同的等級,NLog 除了處理記錄的儲存外還可以再 依據使用者所定義的等級做後續不同處理方式的操作。 NLog 27
  28. 28.  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
  29. 29.  Trace:用於追蹤,可以在程式裡需要追蹤的地方將訊息以Trace傳出。  Debug:用於開發,於開發時將一些需要特別關注的訊息以Debug傳出。  Info:訊息,記錄不影響系統執行的訊息,通常會記錄登入登出或是資料的 建立刪除、傳輸等。  Warn:警告,用於需要提示的訊息,例如庫存不足、貨物超賣、餘額即將不 足等。  Error:錯誤,記錄系統實行所發生的錯誤,例如資料庫錯誤、遠端連線錯 誤、發生例外等。  Fatal:致命,用來記錄會讓系統無法執行的錯誤,例如資料庫無法連線、 重要資料損毀等。 NLog rules – 記錄的等級 29
  30. 30. DEMO:使用 NuGet 安裝 NLog 30
  31. 31. DEMO:將 NLog 訊息儲存在 SQL Server 31
  32. 32. DEMO:設定並使用 Email 寄發 Log 訊息 32
  33. 33. Log Reporting Dashboard Darren Weir
  34. 34.  提供一個整合 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
  35. 35. DEMO:設定 ELMAH 與 NLog 35
  36. 36. DEMO:Log Reporting Dashboard 36
  37. 37. 使用 ELMAH 記錄系統中的未處理異常資訊 允許遠端瀏覽 ELMAH 前必須做好安全性的設定 使用 NLog 記錄系統中任何處理訊息 使用 Log Reporting Dashboard 統一讀取 Log 資料 總結 - ASP.NET MVC 偵測監控與 Log 記錄 37
  38. 38.  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
  39. 39. mrkt的程式學習筆記 -系統記錄與效能監測 39 http://kevintsengtw.blogspot.tw/p/blog-page_30.html
  40. 40. 我敢跟妳賭,十年後 …… 我連 LOG 是什麼都不知道,照樣活得很好。
  41. 41. 謝謝各位 ! 41
  42. 42.  我們熱愛 Web 開發技術,並樂於分享 ASP.NET MVC 開發心得  已成功建立數個灘頭堡的經驗,深知 MVC 開發模式條理分明,有 利於分工與管理,想推薦給尚未了解的開發人員  不願意看到 MVC 叫好不叫座,我們樂意透過經驗交換來破除導入 障礙 42 為何組成 twMVC
  43. 43.  A quite simple http://mvc.tw/  But, it’s still under-construction now  43 twMVC 資訊分享
  44. 44.  每週小型聚會,不特定主題  固定於每週四 19:30-21:30,不改時間,逢國定假日暫停一次  議程不會提前排定,以當天參加者最近的心得分享為主  舉辦不定期研討會 44 twMVC 做哪些事推廣 ASP.NET MVC 技術
  45. 45.  預先設定主題的中大型會議,主題提前於 mvc.tw 上公告  原則上一個月排定一次,因場地關係會設定報名人數上限 45 twMVC 不定期研討會
  46. 46. 46 本次線上問卷 http://www.accupass.com/Question/522076701012640
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×