[ASP.NET]從Log追蹤錯誤

[ASP.NET]從Log追蹤錯誤

一般我們到客戶端除錯時,不太可能要求客戶家有安裝VS等開發工具,除了一些環境簡測工具之外,一般我們很習慣看Log,而我們有哪些Log可以看呢?就我個人的習慣我會看這幾個地方:

  • IIS Log:位於C:\WINDOWS\system32\Logfiles,裡頭有兩個重要的目錄W3SVC跟HTTPERR,
    • W3SVC:記錄了IIS每個response/request的結果
    • HTTPERR:記錄IIS在運作過程中發生的一些錯

W3SVC的格式很凌亂,大概長的像這樣:

image

 

它的格式非常的凌亂,如果要一行一行看,簡直要我們的命,我們可以使用市面上提供的Log分析軟體,如LogParser或NIHUO Web Log Analyzer,下面示範用LogParser將Log檔轉成CSV等較容易閱讀的檔案

    • 啟動LogParser

image

    • 輸入LogParser語法(細部語法可以參考Log Parser Documentation)

image

    • 檢視產出檔案(上例會放在LogParser的目錄中)

image

    • 開啟後可看到檔案內容已經被做好格式化了,這樣是不是簡單多了。

image

HTTPERR的格式也大同小異:

image 在裡頭會看到當IIS在運作過程中發生了哪些Error,裡頭有些錯誤代號,如Timer_ConnectionIdle、Timer_AppPool等等,這些錯誤分別代表什麼意思呢?可以參考這邊HTTP API ERROR

PS.這兩個Log中所記錄的時間都是格林威治時間,換算成台灣的時間大約需要再加8小時才是正確的時間。

  • Event Log

開啟控制台-->系統管理工具-->事件檢視器,一般應用程式的問題我們會應用程式的部分,可以看到下圖中有驚嘆號,也有紅色的X,

image 紅色的X通常代表嚴重的錯誤,例如下面這個:

image而黃色驚嘆號通常只代表警示,但這有可能是我們解決問題的契機,需要多做留意, 比如在上頭我們看到兩個來源是ASP.NET2.0的警示,點進去看發現原來這是一個未被攔截的錯誤訊息,在客戶端如果無法重現該問題,從這邊大多可以找出原因所在,它的內容記錄的蠻詳細的。

image 而若懷疑是OS或者其他硬體出了問題,我們可能會看與系統有關的錯誤訊息:

image

  • 系統的Log:

相信任何一套完整的系統,應該都會有自己的log,而多數的問題應該都可以由系統本身的log中被分析出來,若分析不出來才會開始找上述兩個地方的log。

客戶端問題處理久了,大概都能有方向找出各種錯誤,以上是我個人在追蹤ASP.NET系統問題時,習慣使用的一些log內容,有機會再介紹我常用的每套工具吧。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。