如何使用log4j2属性文件在每次运行时生成带有日期时间戳的日志文件

时间:2019-06-06 16:31:23

标签: log4j2

我想为我的测试框架创建日志文件,并为每次运行的测试套件添加日期时间戳。我尝试使用以下代码,但无法正常工作。

name=PropertiesConfig
property.filename = logs/Temp
appenders = console, file

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n

appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/TestRun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log
appender.fileout = com.veerasundar.dynamiclogger.NewLogForEachRunFileAppender
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n

loggers=file
logger.file.name=utilities
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

执行测试套件时,它抛出以下错误。

2019-06-06 21:57:54,919 main ERROR FileManager (logs/Temp/TestRun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log) java.io.FileNotFoundException: logs\Temp\TestRun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log (The filename, directory name, or volume label syntax is incorrect) java.io.FileNotFoundException: logs\Temp\TestRun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

该错误是不言自明的,找不到您指定的filename。 可以提供fileName作为某些文件名,并且可以显式指定filepattern,如下所示:

appender.file.fileName = Testrun.log
appender.file.filePattern = Testrun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log