MQ 日志配置
本文档主要介绍 MQ 客户端日志的正常打印方式,MQ 客户端日志格式解析以及如何自定义 MQ 客户端日志配置。
打印 MQ 客户端日志
MQ 客户端日志在问题定位排查中扮演着非常重要的角色,通过日志记录客户端运行过程中的异常,能够帮助尽可能真实的还原某个时间点的异常场景,最终达到快速定位、修复 Bug 的目的。
TCP Java SDK 打印 MQ 客户端日志
MQ 的 TCP Java SDK 基于 SLF4J 接口编程,客户端日志的打印依赖用户在配置文件中指定的日志实现。目前支持 log4j(暂不支持log4j2)、logback,可在 pom.xml 或者 lib 中添加对应的日志实现依赖即可:
方式一:依赖 log4j 作为日志实现
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>1.7.7</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.7</version>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- </dependency>
方式二:依赖 logback 作为日志实现
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- <version>1.1.2</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>1.1.2</version>
- </dependency>
注意:应用中同时依赖 log4j 和 logback 的日志实现会造成日志冲突导致客户端日志打印混乱。确保应用只依赖其中一个日志实现,是正确打印 MQ 客户端日志的前提条件,建议通过 mvn clean dependency:tree | grep log 命令排查。
MQ 客户端日志默认配置
在应用中添加了唯一的日志实现后启动 MQ 客户端,MQ 客户端将会按照如下的配置生成日志文件:
- 日志保存路径:/{user.home}/logs/ons.log,其中{user.home}是指启动当前 Java 进程的用户的根目录
- 单个日志文件大小:64MB
- 保存历史日志文件的最大个数:10个
- 日志级别:INFO
自定义日志配置
MQ 客户端支持用户自定义 日志保存路径、日志级别以及保存历史日志文件的最大个数;考虑到日志传输以及阅读的便利性,暂不允许自定义单个日志文件大小,仍保持默认64MB;可通过配置保存历史日志文件的最大个数来自定义日志文件保存的时间范围。
各个参数配置说明如下:
- 日志保存路径:请确保应用进程有对该路径写的权限,否则日志不会打印。
- 保存历史日志文件的最大个数:支持1到100之前的数值,超出范围或者格式错误默认保存10个。
- 日志级别:支持 ERROR、WARN、INFO、DEBUG 中任何一种,不匹配默认 INFO。
TCP Java SDK 自定义 MQ 客户端日志
自定义 MQ 客户端日志配置,请升级 TCP Java SDK 版本到1.2.5及以上。
在 TCP Java SDK 中自定义 MQ 客户端日志配置,请设置如下系统参数:
- ons.client.logRoot :日志保存路径
- ons.client.logFileMaxIndex :保存历史日志文件的最大个数
- ons.client.logLevel :日志级别
举例说明,可在启动脚本中或者 IDE 的 VM options 中添加如下系统参数:
- -Dons.client.logRoot=/home/admin/logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20