我们在开发WEB项目的时候,经常会出现这样的情况:在本地调试都是正常的,但是部署到服务器上就不行了。一般出现这种情况很大一部分原因是因为服务的环境和本地不同,数据库的配置以及服务器软件环境。如何能够准确快速的判断问题的所在呢?本人总结了我平时用过的三种方法。
第一:凭经验。自己写的程序当然对于业务逻辑会非常清楚,页面执行到什么程度,什么地方可能会出错,凭经验也能猜出可能出错的地方。这种方法依赖于程序员的经验。
第二:让应用程序报出黄页,显示具体的错误信息。这种方法可以非常直观的看出程序的错误所在。但是如果是正式环境,程序是不可能让出现报黄页的情况。用户看到错误黄页对于管理者来说简直就是一种恶梦。一般都会跳到一个自定义的错误页,显示些系统错误之类的信息。这种情况第二种方法就行不通了。
第三:记录错误日志。利用try catch机制来捕获错误信息,然后将错误信息记录在日志中,供日后查找。显然第三种方法是最佳的方式,这种方式的实现,一般分为两种:
一种:自己写这种记录日志的组件。
二种:利用第三方组件,例如:log4net。
这两种方式都是可行的,只要能够满足你的需求什么方式并不重要。利用第三方组件来说简单点,这里就说了log4net的应用。这个组件在几年前就有了,只是我并没有用。现在在项目是发现了它的存在,才知道它的重要性。首先来说下log4net组件的优点吧:
第一:支持多种记录日志的方式,可分为邮件形式,文本形式,数据库存储,等等;
第二:在大并发的情况下很好的解决了写入同一文件的问题;
第三:可根据日期以及文件大小来生成不同的日志文件;
第四:配置相对简单,调用也方便。
园子里面已经有不少朋友写过log4net的文章,本人都是受教者,现在只是想更多的分享下使用log4net的经验。可以说是对它应用的一种唠叨吧。
要想利用log4net,我把它分为三步:
第一:在项目中引用log4net组件;
第二:配置log4net,一般都写在web.config中;
第三:调用部分。
具体怎么配置,我不想多说,官方文档中已经写的太清楚了,也不是本文的重点。这里就我的经验和大家分享下:
经验一:配置文件不写在web.config中;
理由:
一个项目随着需求的变更,配置字节会特别多,不便查阅及维护。而且一但更改配置文件,就会引起IIS重启。
解决方案:我们可以利用以下方法来实现:
log4net.Config.XmlConfigurator.ConfigureAndWatch(string filePath)
它用来加载配置文件,这个配置文件可以放在任意地方,与WEB程序完成分离,更改此文件可以避免IIS的重启。
经验二:写一个调用log4net的公共类,根据不同的功能模块来生成不同的ILog接口。
一般在项目中程序都会分成很多不同的模块,如果所有的模块的日志都写在一个目录里面,那在查阅的时候会是一种麻烦,我们可能根据不同的模块甚至更详细的功能来设置日志文档的存储路径。例如:娱乐新闻/weblog.txt,体育新闻/weblog.txt等等。
经验三:log4net并不一定要在程序发生错误时才记录日志,你可以把程序的业务逻辑处理过程都记录下来。
例如有一个非常复杂的业务处理,里面可能会调用webservice,第三方接口什么的,此时如果程序出错,程序员在判断错误时往往会非常困难,你可以把执行过程都记录下来,这样当程序出错时你通过日志就知道在哪一步出问题了。记录这种日志时可以用级别最低的Info来记录,程序稳定后在配置文件中更改日志记录级别就可以避免在程序无错时也记录日志的负载了。