使用具有毫秒级滚动的 RollingFileAppender 时出现 Log4j2 'Unable to move file' 错误

Log4j2 'Unable to move file' error when using RollingFileAppender with millisecond level rolling

我正在尝试将 Log4j2 配置为以毫秒级粒度滚动和记录文件。

我使用过的配置(相关部分)如下:

status=error

dest = err

property.filename = logs/dims/${env:HOSTNAME}/logging-${date:yyyy-MM-dd'T'HH:mm:ss,SSSSS}.log

appenders = console, rolling

## Rolling File Appender
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.append = true
appender.rolling.fileName = ${filename}
appender.rolling.filePattern = logs/dims/${env:HOSTNAME}/logging-%d{yyyy-MM-dd'T'HH:mm:ss,SSSS}.log

appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy

rootLogger.level = info
rootLogger.appenderRefs = console, rolling

rootLogger.appenderRef.console.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile

正在按要求的粒度创建日志文件,但我在控制台中看到如下错误:

2019-06-10 10:57:41,689 main ERROR Unable to move file logs/dims/dsp/logging-2019-06-10T10:57:31,00358.log to logs/dims/dsp/logging-2019-06-10T10:57:41,0587.log: java.nio.file.NoSuchFileException logs/dims/dsp/logging-2019-06-10T10:57:31,00358.log -> logs/dims/dsp/logging-2019-06-10T10:57:41,0587.log

但是当我执行ls时,错误中的两个文件logging-2019-06-10T10:57:31,00358.loglogging-2019-06-10T10:57:41,0587.log都存在。

有人可以帮助我了解导致此错误的原因以及如何预防吗?

我在 Ubuntu bash 控制台上 运行 Windows 10。尽管 bash 控制台提供了一个类似于 Linux 的界面我想文件名中可接受的字符仍然由底层 Windows 系统决定。正在创建日志文件,但由于文件名中的 :,记录器似乎无法滚动到新文件。

根据 Vikas 的评论,我 运行 在 Linux 机器上使用相同的代码,然后没有错误。