我們在項目中使用log4j開發的時候,會遇到一些特殊的情況,比如:要輸出某個類中某個方法的日志信息到文件中,方便以后查看
可以使用如下配置:
log4j.rootLogger=info,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.stdout.encoding=UTF-8
log4j.logger.payInfo=info,payInfo
log4j.additivity.payInfo=false
log4j.appender.payInfo=org.apache.log4j.FileAppender
log4j.appender.payInfo.layout=org.apache.log4j.PatternLayout
log4j.appender.payInfo.File=d:/log4j.txt
其中stdout是指輸出到控制台的配置。
log4j.logger.payInfo=info,payInfo 是自定義的一個logger
log4j.additivity.payInfo=false 指定該logger不會使用父logger的配置,也就是說不會在console輸出。
代碼中使用如下:
1 @Controller 2 @RequestMapping("pay") 3 public class PayController extends BaseController{ 4 5 Logger payLogger = Logger.getLogger("payInfo"); 6 7 Logger infoLogger = Logger.getLogger(PayController.class); 8 9 @RequestMapping("test") 10 public void test(HttpServletRequest request, HttpServletResponse response){ 11 t2(); 12 payLogger.info("這是支付的日志"); 13 } 14 private void t2(){ 15 infoLogger.info("這是info的日志"); 16 } 17 }
Logger payLogger = Logger.getLogger("payInfo"); 這里是獲取自定義的logger
Logger infoLogger = Logger.getLogger(PayController.class); 這里獲取到的就是父logger
方法執行之后會在控制台輸出infoLogger.info("這是info的日志");的內容,
而payLogger.info("這是支付的日志");會輸出到文件,並且不會在控制台輸出。