可以使用[property]配置创建为log4j2日志文件添加时间戳:
appender.FILE.type = FILE
appender.FILE.name = FILE
appender.FILE.fileName = file-with-date-${date:yyyy-MM-dd}.log
appender.FILE.layout.type = PatternLayout
appender.FILE.layout.pattern =[%p] %m%n
这将在file-with-date-2017-11-30.log
中生成日志文件。如何使用编程配置实现相同的行为?这是我到目前为止所尝试的:
PatternLayout layout = PatternLayout.newBuilder()
.withConfiguration(ctx.getConfiguration())
.withPattern("%m%n").build();
FileAppender fileAppender = FileAppender.newBuilder()
.withLayout(layout)
.withFileName( "file-with-date-${date:yyyy-MM-dd}.log")
.withName("pattern")
.build();
但是这会生成以下文件:file-with-date-${date:yyyy-MM-dd}.log
。因此,使用属性配置:包含当前日期的日志文件,使用以编程方式创建的appender ${date:yyyy-MM-dd}.log
将被忽略。
答案 0 :(得分:0)
显然StrSubstitutor可以在这种情况下提供帮助。
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
String fileName = config.
getStrSubstitutor().replace("file-with-date-${date:yyyy-MM-dd}.log");
FileAppender fileAppender = FileAppender.newBuilder()
.withLayout(layout)
.withFileName(filename)
.withName("pattern")
.build();