ASP.Net MVC 之如何写Log

 我来答
睽姐723
2013-11-15 · TA获得超过188个赞
知道答主
回答量:141
采纳率:100%
帮助的人:64万
展开全部
日志(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, 并在项目中引用它们。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式