1. log4j配置文件的命名。
必須命令為 log4j.properties
2. log4j配置文件放在哪?
放在工程里 WEB-INF/classes 目錄里。(不需要自己加載,Tomcat會自動加載此配置文件)
如果使用的是Eclipse,那么可以把 log4j.properties 放在工程的src目錄下,這樣當(dāng)在Eclipse中修改它之后,Eclipse會自動的把它更新到classes目錄里,比較方便。
3. 使用logger.
完成1,2步后,就可以使用 log4j 了。
private static Logger logger = Logger.getLogger(RequestMlms.class.getName());
logger.info("Hello world");
每個要使用logger的類都生成一個靜態(tài)的Logger對象:
這是有原因的,因為在配置文件中 log4j.logger.packageName 用以指定某個包下面的logger輸出的日志的配置,如目的地,格式。
例如:
log4j.rootLogger=DEBUG, A1
#A1 Print message into console
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %l: %m%n
指定了根logger輸出的信息到命令行(logger以樹形結(jié)構(gòu)管理,有繼承特性:如果子包沒有l(wèi)og4j配置,則繼承使用父包的配置)。
而如果把上面的 log4j.rootLogger=DEBUG, A1換成 log4j.logger.hb.util=DEBUG, A1
則說明包hb.util下的所有類中使用 logger 輸出的信息都輸出到命令行。而此時包 hb.domain 中的類使用 logger 輸出的日志時則會提示沒有指定輸出目的地,不進(jìn)行輸出。這是因為在log4j配置文件中沒有為hb.domain里的類指定日志配置信息。