當前位置:名人名言大全網 - 短信平臺 - ASP.Net MVC 之如何寫Log

ASP.Net MVC 之如何寫Log

日誌(Log)對於壹個程序的重要性不言而喻。操作系統的代碼bootloader之後,就必須要實現串口打印log,因為妳根本沒有辦法debug,這是早期移植Windows CE 5.0到6.0的經驗,直到現在還是受用。集成開發環境,特別是Visual studio提供了強大的debug環境,特別是C#,Java等高級語言很容易發現NullReferenceException之類的異常,但對於C++等程序來說,沒有Log簡直沒法做。其實對於線上環境來說,log還是很重要,因為妳不可能很方便地重現環境。特別是對於facebook之類的公司,甚至利用log進行用戶行為分析,這算是使用log的上乘了,我們先利用好log做好基本工作吧。1.Log寫在哪兒 1. 函數入口寫上Log,並且要把參數也寫上(我認為是必須 ) 2. 異常處寫上Log(我認為是必須) 3. 計算特別復雜,沒有把握的地方寫上(視自己的情況而定 ) 下面有代碼例子: public ActionResult Index(int Id) {

_logger.DebugFormat("Comment load single comment by commentId :{0}", Id);try {var comment = _commentService.Get(Id);

return FormatResult(comment);}catch(Exception e){_logger.Error(e.Message);}return FormatResult(InCityErrorMessage.INCITY_COMMENT_LOAD_FAILED);

} 2.正確使用Log的級別 1. 函數入口處的Log和壹般調試的Log使用debug級別,如上面的代碼片段. _logger.DebugFormat("Comment load single comment by commentId :{0}", Id); 2. 執行某項操作之後,使用info級別。例如支付成功,註冊用戶等。 _logger.InfoFormat("Add order complete, orderId{0}, tradeNo:{1}, buyCount:{2}, unitPrice:{3}, orderDate:{4}, orderState:{5}", orderContract.Id, orderContract.TradeNo, orderContract.BuyCount, orderContract.Price, orderContract.OrderDate, orderContract.OrderStateText); 3. 異常處使用Error,或者明顯出錯的地方 _logger.Error(e.Message); 4. 發生嚴重地錯誤,導致破壞業務流程,例如短信發送或者訂單處理,或者程序Crash.public virtual bool Send(BaseSMSContract contract) {try {_logger.Debug("In SMSService Send");

//....... }

catch (Exception e){_logger.Fatal(e.Message);}return false;

} 3.根據級別不同使用將Log輸出到文件,數據庫 能夠利用現有的框架來寫log那是非常方便了。我們項目中使用的是asp.net mvc框架,使用和Log4net很好地實現了log。 下面介紹下具體的步驟: 1.下載Common.Logging,Common.Logging.Log4net,log4net三個dll, 並在項目中引用它們。