org.ops4j.pax.logging.cfg 与 TimeBasedRollingPolicy

问题描述 投票:0回答:1

我需要使用内置的 pax 日志记录来编写 Apache Karaf 日志记录,以便在 TimeBasedRollingPolicy 中每天滚动。

由于代码是隐藏的,我只能覆盖属性来利用TimeBasedRollingPolicy

Q1) Apache Karaf 4.2.9 是否支持 TimeBasedRollingPolicy? Q2)如果是,任何人都可以共享带有 TimeBasedRollingPolicy 和相关属性的示例 cfg 文件吗?

我不要 SizeBasedTriggeringPolicy,只要 TimeBasedRollingPolicy。我必须通过代码来处理这个问题。

org.ops4j.pax.logging.cfg 显示如下:

`# Rolling file appender
log4j2.appender.rolling.type = RollingRandomAccessFile
log4j2.appender.rolling.name = RollingFile
log4j2.appender.rolling.fileName = [path]/karaf.log
log4j2.appender.rolling.filePattern = [path]/app-name-%d{yyyy-MM-dd-HH-mm}-%i.log
# uncomment to not force a disk flush
#log4j2.appender.rolling.immediateFlush = false
log4j2.appender.rolling.append = true
log4j2.appender.rolling.layout.type = PatternLayout
log4j2.appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
log4j2.appender.rolling.policies.type = Policies
log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.rolling.policies.size.size = 16MB

# Audit file appender
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AuditRollingFile
log4j2.appender.audit.fileName = [path]/security.log
log4j2.appender.audit.filePattern = [path]/security.log.%i
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

# OSGi appender
log4j2.appender.osgi.type = PaxOsgi
log4j2.appender.osgi.name = PaxOsgi
log4j2.appender.osgi.filter = *
log4j2.appender.rolling.policies.time.type = TimeBasedRollingPolicy
log4j2.appender.rolling.policies.time.interval = 1
log4j2.appender.rolling.policies.time.modulate = TRUE
log4j.appender.out.file = ${mkv.logsdir}/karaf.log`
apache-karaf pax
1个回答
0
投票

首先-检查Log4j2 RolloverStrategies-没有

TimeBasedRollingPolicy
之类的东西(该名称在Logback中可用)。

但是有

TimeBasedTriggeringPolicy
,这里的工作配置每 15 秒滚动一次:

log4j2.appender.timerolling.type = RollingRandomAccessFile
log4j2.appender.timerolling.name = TimeRollingFile
log4j2.appender.timerolling.fileName = ${karaf.log}/time.log
log4j2.appender.timerolling.filePattern = ${karaf.log}/time.log.%d{yyyy-MM-dd-HH-mm-ss}
log4j2.appender.timerolling.append = true
log4j2.appender.timerolling.layout.type = PatternLayout
log4j2.appender.timerolling.layout.pattern = ${log4j2.pattern}
log4j2.appender.timerolling.policies.type = Policies
log4j2.appender.timerolling.policies.time.type = TimeBasedTriggeringPolicy
log4j2.appender.timerolling.policies.time.interval = 15

interval=15
可能令人困惑,但(在阅读源代码后)它的意思是“每 15 个文件模式中指定的最小单位翻转一次”。 因此,如果模式是
${karaf.log}/time.log.%d{yyyy-MM}
,您将每 15 个月触发一次。

通过上述设置并稍等一下,我有这些文件:

time.log
time.log.2023-02-24-09-43-48
time.log.2023-02-24-09-44-18
time.log.2023-02-24-09-44-34
© www.soinside.com 2019 - 2024. All rights reserved.