问题描述
我看了hibernate等应用log4j的框架源码,有些类都有下面这句代码Logger log=Logger.getLogger(XXX.class);我想知道的是用到log4j的类就需要这样写一个吗?不能定义一个通用的静态的logger,需要用到log4j的类就使用这个静态的logger来使用吗? 问题补充:这样你就知道是哪个类产生的日志信息了这个功能通过配置log4j也可以实现的啊,log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%t] %C.%M(%L) %m%n这样子打印效果:2011-01-13 16:12:28 INFO [http-80-1] com.game.manager.biz.GoodsBiz.createExcel(247) 成功生成游戏物品清单通过这个我也可以知道是哪个类产生的日志信息了。有没有其它解释呢?没有的话我整个系统就用一个静态的日志记录器了。
解决方案
Logger log=Logger.getLogger(XXX.class); 通过参数,你可以知道是哪个类出的异常,你写成静态的完全没问题
解决方案二:
通过继承的方式,可以减少实例化logger
解决方案三:
引用Logger.getLogger(XXX.class); 中的XXX.class指定是哪个类的日志,当日志打印出来时可以把类的完整名称打印出来,这样你就知道是哪个类产生的日志信息了 通用、共用没问题,只是你那样打印出来的信息不直观
时间: 2024-09-28 17:41:30