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("这是支付的日志");会输出到文件,并且不会在控制台输出。

posted @ 2019-06-11 17:36  xiaoshen666  阅读(2445)  评论(1编辑  收藏  举报