2013年2月14日 星期四

log 訊息的處理

作者: mgtsai () 看板: Soft_Job
標題: Re: [閒聊] 各位工作有遇到甚麼很扯的事情嗎?
時間: Wed Sep 12 22:13:58 2012

※ 引述《del680202 (HANA)》之銘言:
: ※ 引述《mgtsai ()》之銘言:
: 一個程式碼好不好小弟不敢評論
: 不過很扯的問題倒是遇過
: 之前系統有一隻function常常會丟一些不正常的exception
: 然後log上就很多這個exception的錯誤訊息
: 我就跟開發這隻程式的RD說
: 「你看!這段程式一直都有錯誤訊息跑出來耶」

: try{
:    ...
: }catch(Exception e){
:    log(e);
: }
: 結果那個RD的回應
: 「這樣啊,那我改這樣就不會有錯誤訊息跑出來了」
: try{
:    ...
: }catch(Exception e){
:    //log(e);
: }
: 我:(這是再衝三小)....
: 這種處理問題的方式真的讓我下巴脫臼

說老實話,這種問題比較是兩難的問題,牽涉到 log 訊息的處理
真的要好好解決這個問題,整個系統必須設計 log 機制
包含 log 分級,開關與否,以及 log 該寫到哪裡去 (console, file, email...)
像 Java 的 log4j 就是一套不錯用的工具

之所以說這是個兩難的問題,是因為不同的角色對 log 有不同的需求
比如一般使用者,看到 log 有錯誤訊息就會感到天好像塌下來似地
到時你們家的 FAE 就有每天接不完的電話,臭罵你們家的軟體真是爛
有一堆錯誤到處亂飛

但以 PG 的角度而言,會很喜歡 log,巴不得程式裡頭發生的大小事
包含你家的蟑螂是不是生了一窩狗蛋這類的事,全部巨細靡遺全部塗牆記錄下來
當系統發生 bug 時,好讓他有足夠的訊息
可以分析系統在執行過程中的細節以利揪臭蟲

因為不同角色對 log 的需求不同,而且說真的
這部分很不容易在規劃之初就定義好,發生什麼事該 log,發生什麼事不該 log
甚至有很多案子在 SA 或 SD 階段,根本就是放掉 log 的問題不管
所以,該不該 log 這件事,在這種狀況下,就變成 PG 的自由心証
而且會傾向於 PG 自己的需求為主

當然,這個態勢不會持續發展下去,當這套系統開啟進行內部測試甚或推到客戶端時
過多的 log 必定會遭受眾人圍剿,這時就會被逼著開始砍 log
而且這個時候再砍 log 比較有道理,因為開發之初必定錯誤滿天飛
需要這些 log 來輔助,但一段時間之後,臭蟲抓得差不多了
這些 log 也漸漸失去當初的存在價值,最後該留下哪些 log 該砍掉哪些 log
大概是由眾人打架決定出來的

您所做的事,只不過就是這個砍 log 過程的其中一環而已
你覺得這個 log 很惱人,該模組的負責 PG 接受了你的需求,直接把它砍了
就只是這回事而已

若系統在開發之初就考慮到 log 處理機制,這個衝擊相對而言就小些
但我看過的眾多實例,有許多案子一開始沒把 log 當成一回事
等到進入開發期後半時,漸漸被 log 問題惹惱
這時要空降安插一套 log 處理機制的成本就高很多

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.51.53
※ 編輯: mgtsai          來自: 118.168.51.53        (09/12 22:15)
推 cyr1216:推~~~                                                   09/12 22:21

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.