在项目中使用log4j的时候,是不是每个类中(action \ service \ dao),都要写:Logger logger=Logger.getLogger(xxx类.class);然后才能输出日志?1.如果像上面我说的那样,是不是冗余代码太多了?
2.通常是在什么情况下记录日志,是在抛出异常的时候才记录吗,还是其他情况?
3.通常记录日志记录哪些内容?

解决方案 »

  1.   

    也可以在基类中这样定义
    protected Log log = LogFactory.getLog(getClass());
      

  2.   

    调试用log.debug(),
    有异常时 log.error(),
    其它情况info,warn 用的不是很多。
      

  3.   

    1.就一句代码无所谓。
    2.记录程序运行状态,跟踪bug。获取出错信息。
    3.比如记录运行状态的时候进入那个方法,begin。end。记录异常信息就要记录e.getMessage()
      

  4.   

    1楼的
    如果要是在基类中写protected Log log = LogFactory.getLog(getClass());
    getClass()获得的是基类啊,也不是当前的子类啊? 记录日志的时候,记录的是基类的名字啊!我看过spring AOP的after throwing可以在某些类抛出异常的时候进行横切,如果要是把logger的实例化放在这个切面里,在某些类抛出异常的时候就制动调用切面中的日志,不知道这样做好吗?