如何为ActiveMQ Classic 5.15.2各TransportConnector配置独立端口日志?
针对ActiveMQ Classic 5.15.2 按TransportConnector拆分日志的配置方案
ActiveMQ 5.15.2基于Log4j 1.x实现日志管理,要按端口/Connector拆分连接相关日志,需通过自定义Log4j Appender+内容过滤实现,具体步骤如下:
1. 修改Log4j配置文件
编辑ActiveMQ安装目录下conf/log4j.properties文件:
1.1 添加独立的日志Appender
分别为NIO(61616)和STOMP(61617)连接器定义专属的滚动文件Appender:
# NIO连接器日志Appender log4j.appender.NIO=org.apache.log4j.RollingFileAppender log4j.appender.NIO.File=${activemq.base}/data/61616-nio.log log4j.appender.NIO.MaxFileSize=10MB log4j.appender.NIO.MaxBackupIndex=5 log4j.appender.NIO.layout=org.apache.log4j.PatternLayout log4j.appender.NIO.layout.ConversionPattern=%d{ISO8601} | %-5p | %t | %c | %m%n # STOMP连接器日志Appender log4j.appender.STOMP=org.apache.log4j.RollingFileAppender log4j.appender.STOMP.File=${activemq.base}/data/61617-stomp.log log4j.appender.STOMP.MaxFileSize=10MB log4j.appender.STOMP.MaxBackupIndex=5 log4j.appender.STOMP.layout=org.apache.log4j.PatternLayout log4j.appender.STOMP.layout.ConversionPattern=%d{ISO8601} | %-5p | %t | %c | %m%n
1.2 为Appender添加内容过滤规则
通过StringMatchFilter筛选对应连接器的日志内容,只保留包含端口号或连接器名称的日志:
# NIO Appender过滤规则:匹配61616或nio关键字 log4j.appender.NIO.filter.1=org.apache.log4j.varia.StringMatchFilter log4j.appender.NIO.filter.1.StringToMatch=61616 log4j.appender.NIO.filter.1.AcceptOnMatch=true log4j.appender.NIO.filter.2=org.apache.log4j.varia.StringMatchFilter log4j.appender.NIO.filter.2.StringToMatch=nio log4j.appender.NIO.filter.2.AcceptOnMatch=true log4j.appender.NIO.filter.3=org.apache.log4j.varia.DenyAllFilter # STOMP Appender过滤规则:匹配61617或stomp关键字 log4j.appender.STOMP.filter.1=org.apache.log4j.varia.StringMatchFilter log4j.appender.STOMP.filter.1.StringToMatch=61617 log4j.appender.STOMP.filter.1.AcceptOnMatch=true log4j.appender.STOMP.filter.2=org.apache.log4j.varia.StringMatchFilter log4j.appender.STOMP.filter.2.StringToMatch=stomp log4j.appender.STOMP.filter.2.AcceptOnMatch=true log4j.appender.STOMP.filter.3=org.apache.log4j.varia.DenyAllFilter
1.3 关联日志输出类并关闭日志传递
将负责输出连接日志的类绑定到对应Appender,并关闭日志的向上传递(避免重复输出到root日志):
# 连接相关日志的核心输出类 log4j.logger.org.apache.activemq.broker.TransportConnection=INFO, NIO, STOMP, stdout log4j.logger.org.apache.activemq.transport.nio=INFO, NIO, stdout log4j.logger.org.apache.activemq.transport.stomp=INFO, STOMP, stdout # 关闭日志向上传递,避免重复输出到root日志文件 log4j.additivity.org.apache.activemq.broker.TransportConnection=false log4j.additivity.org.apache.activemq.transport.nio=false log4j.additivity.org.apache.activemq.transport.stomp=false
2. 重启ActiveMQ服务
执行以下命令重启服务使配置生效:
cd /path/to/activemq/bin ./activemq stop ./activemq start
验证效果
- 连接61616端口时,
data/61616-nio.log会记录连接建立/失败、错误/警告日志 - 连接61617端口时,
data/61617-stomp.log会记录对应日志
注意事项
- 若需调整日志级别(如DEBUG),可将配置中的
INFO改为对应级别 - 确保ActiveMQ进程对
data目录有读写权限 - 该方案依赖Log4j 1.x的Filter特性,5.15.2版本原生支持,无需额外依赖
内容的提问来源于stack exchange,提问作者GOOGGOOG
相关产品推荐
相关产品推荐

