log4j 动态改变日志的输出路径

Posted xiaohu-v587

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j 动态改变日志的输出路径相关的知识,希望对你有一定的参考价值。

 

实际背景

  客户有客户端多台,每个客户端有自己的唯一编号。输出的日志要根据每个客户端的编号生成,例如10001_demo.log,10002_demo.log

方法

  1.网上给出的第一种方法是:

    在log4j的配置文件中log4j.appender.file.File=${log.dir}/${log.file}中,使用${}形式定义变量,在后台使用

    System.setProperty("log.dir","/home/..."),来设置变量值。但我测试了多次,这样是不起作用的,可能是我自己配置的问题。

    2.第二种方法,亲测可用:  

1    Logger log = Logger.getLogger(ZhzhcxCtl.class);//获取log对象
2   FileAppender fileAppender = (FileAppender) Logger.getRootLogger().getAppender("file");//获取FileAppender对象
3   fileAppender.setFile("/home/log/gcds.log");//重新设置输出日志的路径和文件名
4   fileAppender.activateOptions();//使设置的FileAppender起作用
5   log.info("index.........");

        

以上是关于log4j 动态改变日志的输出路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在log4j2.xml中动态设置日志文件路径

动态改变 log4j 日志级别

log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志

Log4j日志记录

Java Spring log4j-怎么配置日志输入的相对路径?

log4j将不同的日志级别输出到tomcat下