log4net+spring.net+Nhibernate 内部异常捕捉问题

当使用log4net+spring.net+Nhibernate组合的时候,如果发生异常,经过层层传递,以及Spring对异常的包装,如果直接使用

                LogManager.GetLogger(typeof(_Default)).Error(ex.Message, ex);

来记录异常信息的话,通常记录不了,猜测的原因(并没有深究。。。):ex有内部异常,且这个异常经过了nhibernate和spring包装之后,log4net无法从内部堆栈中找出最原始的异常,所以导致log4net记录不了这个异常,那么我们就采用以下形式记录:

                LogManager.GetLogger(typeof(_Default)).Error(ex.Message, ex.InnerException == null ? ex : ex.InnerException);

就能解决这个问题!

posted @ 2010-05-21 23:47  HollisYao  阅读(650)  评论(0编辑  收藏  举报