Apache ActiveMQ Artemis PeriodicRotatingFileHandler每日日志配置求助
解决Apache ActiveMQ Artemis每日自动生成新日志文件的问题
我来帮你搞定这个日志滚动的问题——你遇到的情况很常见,核心原因是标准的PeriodicRotatingFileHandler在Artemis运行时没法自动检测日期变化并触发日志滚动,而Artemis本身提供了定制的处理器来解决这个问题。
下面是经过验证的logging.properties配置示例,能实现每日自动生成新的artemis.log文件(旧日志会以日期后缀归档):
# 根日志级别,可根据需求调整为DEBUG/FINE等 .level=INFO # 配置日志处理器:控制台输出 + Artemis定制的周期性滚动文件处理器 handlers=java.util.logging.ConsoleHandler, org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler # 控制台处理器配置(可选,不需要可以删除这部分) java.util.logging.ConsoleHandler.level=FINE java.util.logging.ConsoleHandler.formatter=org.apache.activemq.artemis.utils.DefaultFormatter # --- 核心:Artemis周期性滚动日志配置 --- org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.level=INFO # 使用Artemis默认的日志格式,也可以自定义 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.formatter=org.apache.activemq.artemis.utils.DefaultFormatter # 当前日志文件的路径,${artemis.instance}是Artemis的实例目录变量,也可以写绝对路径 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.fileName=${artemis.instance}/log/artemis.log # 旧日志的命名后缀,格式为yyyy-MM-dd,归档后文件名如artemis.log.2024-05-20 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.suffix=.yyyy-MM-dd # 滚动规则:每天自动滚动一次 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.rotation=DAILY # 日志追加模式,避免覆盖已有内容 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.append=true # 可选:自动删除超过7天的旧日志,防止磁盘溢出 org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler.maxDays=7
关键配置说明
- 使用Artemis定制处理器:一定要用
org.apache.activemq.artemis.core.server.logging.ActiveMQPeriodicRotatingFileHandler,而不是JDK标准的PeriodicRotatingFileHandler。这个定制处理器和Artemis的运行时深度集成,能准确在日期变更时触发日志滚动,不需要重启服务。 rotation=DAILY:明确指定每日滚动,这是触发自动生成新日志的核心参数。suffix格式:定义旧日志的归档命名规则,方便按日期查找历史日志。maxDays:可选参数,自动清理过期日志,建议根据你的磁盘空间配置合适的天数。
注意事项
- 确保Artemis运行用户对日志目录有写入权限,否则日志滚动会失败。
- 如果
${artemis.instance}变量不生效,直接替换为你的Artemis实例的绝对路径(比如/opt/apache-artemis-2.32.0/instances/mybroker/log/artemis.log)。 - 第一次配置完成后需要重启一次服务让新的日志处理器生效,之后每天都会自动滚动日志,无需再手动重启。
内容的提问来源于stack exchange,提问作者RaWneZ
相关产品推荐
相关产品推荐

