获取Log4j2日志文件位置以写入包含日期的目录

时间:2015-01-29 19:25:32

标签: java junit log4j log4j2

如何获取log4j日志文件的位置?我试过这个:Where can i programatically find where the log4j log files are stored?

但它不适用于较新版本的log4j。

我正在创建包含系统日期的文件,但是当我检索路径时,时间戳会发生变化。

1 个答案:

答案 0 :(得分:4)

如果您按如下方式配置了appender:

<File name="Technical" 
      fileName="app/${date:yyyy-MM-dd HHmmss}/logTechnical.log">
  <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>

您可以按如下方式获取目录:

import java.io.File;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.config.Configuration;

...

LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
FileAppender techical = (FileAppender) config.getAppender("Technical");
File dir = new File(techical.getFileName().replaceFirst("[^\\/]+$", ""));