Log4j 配置某個類中某個方法的輸出日誌到指定文件

我們在項目中使用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輸出。

代碼中使用如下:

複製代碼

@Controller
@RequestMapping("pay")
public class PayController extends BaseController{

    Logger payLogger = Logger.getLogger("payInfo");
    
    Logger infoLogger = Logger.getLogger(PayController.class);
    
    @RequestMapping("test")
    public void test(HttpServletRequest request, HttpServletResponse response){
        t2();
        payLogger.info("這是支付的日誌");
    }
    private void t2(){
        infoLogger.info("這是info的日誌");
    }
}

複製代碼

Logger payLogger = Logger.getLogger("payInfo"); 這裏是獲取自定義的logger

Logger infoLogger = Logger.getLogger(PayController.class); 這裏獲取到的就是父logger

方法執行之後會在控制檯輸出infoLogger.info("這是info的日誌");的內容,

而payLogger.info("這是支付的日誌");會輸出到文件,並且不會在控制檯輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章