如何使用 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: logsTempTestRun_%d{yyyy-MM-dd HH:mm:ss.SSS}.log (The filename, directory name, or volume label syntax is incorrect) java.io.FileNotFoundException: logsTempTestRun_%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)

有人可以帮我吗?

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

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

最新更新