org.ops4j.pax.logging.cfg 使用基于时间的滚动策略

huangapple go评论106阅读模式
英文:

org.ops4j.pax.logging.cfg with TimeBasedRollingPolicy

问题

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

由于代码被隐藏,我只能覆盖属性以利用TimeBasedRollingPolicy

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

我不想使用SizeBasedTriggeringPolicy,只想使用TimeBasedRollingPolicy。而且我必须通过代码处理这个问题。

org.ops4j.pax.logging.cfg看起来像这样:

# 滚动文件附加器
log4j2.appender.rolling.type = RollingRandomAccessFile
log4j2.appender.rolling.name = RollingFile
log4j2.appender.rolling.fileName = [路径]/karaf.log
log4j2.appender.rolling.filePattern = [路径]/app-name-%d{yyyy-MM-dd-HH-mm}-%i.log
# 取消注释以不强制刷新磁盘
#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

# 审计文件附加器
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AuditRollingFile
log4j2.appender.audit.fileName = [路径]/security.log
log4j2.appender.audit.filePattern = [路径]/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附加器
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
英文:

I need to write Apache Karaf logging using in built pax logging to have it in TimeBasedRollingPolicy with daily rolling.

As the code is hidden, I can only overwrite the properties to utilize TimeBasedRollingPolicy.

Q1) Is TimeBasedRollingPolicy supported in Apache Karaf 4.2.9?
Q2) If yes, can anyone share the sample cfg file with TimeBasedRollingPolicy and associated properties to be used?

I don't want SizeBasedTriggeringPolicy, just TimeBasedRollingPolicy. And I have to handle this through code.

org.ops4j.pax.logging.cfg appears like this:

`# 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`

答案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
英文:

First - check Log4j2 RolloverStrategies - there's no such thing as TimeBasedRollingPolicy (the name is available in Logback).

There's however TimeBasedTriggeringPolicy and here's working configuration that rolls over every 15 second:

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

The interval=15 may be confusing, but (after reading the source) it means "roll over every 15 of the least unit specified in file pattern".
So if the pattern was ${karaf.log}/time.log.%d{yyyy-MM} you'd have trigger every 15 months.

With the above setting and waiting a bit I have these files:

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

huangapple
  • 本文由 发表于 2023年2月23日 23:37:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/75547035.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定