客户端日志用于记录消息队列RocketMQ版客户端运行过程中的异常,帮助您快速定位和修复问题。本文介绍如何为客户端开启日志打印功能、客户端日志的配置项说明以及如何自定义配置客户端日志。
开启客户端日志打印功能
消息队列RocketMQ版的TCP Java SDK基于SLF4J接口编程。
- Java SDK 1.7.8.Final及以上版本:默认支持,无需设置
消息队列RocketMQ版的Java SDK 1.7.8.Final已内置了日志实现,您无需在客户端应用中添加日志实现依赖即可打印消息队列RocketMQ版的客户端日志。
- 针对Java SDK 1.7.8.Final以下版本:添加日志实现依赖
消息队列RocketMQ版的Java SDK 1.7.8.Final以下的旧版本不支持Log4j2,只支持Log4j、Logback。您需要在
pom.xml
配置文件或者lib中添加对应的日志实现依赖来打印消息队列RocketMQ版客户端日志。示例代码如下:- 方式一:依赖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作为日志实现
注意 应用中同时依赖Log4j和Logback的日志实现会造成日志冲突导致客户端日志打印混乱。请确保应用只依赖其中一个日志实现,您可以通过
mvn clean dependency:tree | grep log
命令进行排查。
客户端日志配置项
客户端日志的配置项及说明如下表所示。客户端启动后,会按照系统默认配置生成日志文件;您也可以自定义配置项,修改日志参数,具体操作,请参见本文中的自定义配置客户端日志。
配置项 | 系统默认配置 | 是否支持自定义配置 | 配置参数 | 自定义取值 |
---|---|---|---|---|
日志保存路径 | /{user.home}/logs/ons.log,其中{user.home}是指您启动当前Java进程的根目录。 | 是 | ons.client.logRoot |
可自定义为您需要将日志文件保存到本地的路径。 请确保您的应用进程有该路径的写权限,否则日志无法打印。 |
日志级别 | INFO | 是 | ons.client.logLevel |
取值如下:
|
保存历史日志文件的最大个数 | 10个 | 是 | ons.client.logFileMaxIndex |
取值范围:1~100。 若设置的值超出该范围或格式错误,则以系统默认值(10个)为准。 |
单个日志文件大小 | 64 MB | 否 | 不涉及 | 不涉及 |
自定义配置客户端日志
注意 若您需要自定义客户端的日志配置,请将Java SDK升级到1.2.5及以上版本。
- 配置方式:在启动脚本或者IDE的VM options中,通过
-D
命令设置客户端日志配置项。 - 配置示例:
- Linux系统配置示例
-Dons.client.logRoot=/home/admin/logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
- Windows系统配置示例
-Dons.client.logRoot=D:\logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
- Linux系统配置示例