使用具有毫秒级滚动的 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.log
和logging-2019-06-10T10:57:41,0587.log
都存在。
有人可以帮助我了解导致此错误的原因以及如何预防吗?
我在 Ubuntu bash 控制台上 运行 Windows 10。尽管 bash 控制台提供了一个类似于 Linux 的界面我想文件名中可接受的字符仍然由底层 Windows 系统决定。正在创建日志文件,但由于文件名中的 :
,记录器似乎无法滚动到新文件。
根据 Vikas 的评论,我 运行 在 Linux 机器上使用相同的代码,然后没有错误。
我正在尝试将 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.log
和logging-2019-06-10T10:57:41,0587.log
都存在。
有人可以帮助我了解导致此错误的原因以及如何预防吗?
我在 Ubuntu bash 控制台上 运行 Windows 10。尽管 bash 控制台提供了一个类似于 Linux 的界面我想文件名中可接受的字符仍然由底层 Windows 系统决定。正在创建日志文件,但由于文件名中的 :
,记录器似乎无法滚动到新文件。
根据 Vikas 的评论,我 运行 在 Linux 机器上使用相同的代码,然后没有错误。