问题介绍

java应用在集成rocketmq客户端的时候,默认的客户端日志是打印在${user}/logs/rocketmqlogs/rocketmq_client.log ,如果需要单独改变打印的路径需要特殊设置。

修改办法

rocketmq-client 4.X.X

该方法在rocketmq-client-4.6.0尝试生效。低版本的rocketmq-client是没有集成日志框架包的,通过开启rocketmq的Slf4j即可集成进现有的日志框架。

  1. 启动脚本增加环境变量:-Drocketmq.client.logUseSlf4j=true

  2. logback.xml增加对应的日志打印:

<!-- 追加一个appender 配置的内容可以自己调整下 -->
	<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_FILE}/rocketmq_client.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}/rocketmq_client_%d{yyyyMMdd}_%i.log.zip</fileNamePattern>
            <maxHistory>366</maxHistory>
            <totalSizeCap>10000GB</totalSizeCap>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>200MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <Pattern>${LOG_PATTERN}</Pattern>
        </encoder>
    </appender>

<!-- 追加一个logger 将rocketmq的日志输出根据RocketmqClientAppender来 -->
    <logger name="RocketmqClient" level="INFO" additivity="false">
        <appender-ref ref="RocketmqClientAppender"/>
    </logger>

rocketmq-client 5.X.X

该方法在rocketmq-client-5.2.0尝试生效。高版本的rocketmq-client将日志框架改个包名集成进来,所以配置方法与之前版本不太一样。

  1. 在资源文件路径追加rmq.logback.xml配置文件,配置内容参考如下,可以根据实际情况修改变动:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <conversionRule conversionWord="pid" converterClass="io.github.aliyunmq.logback.extensions.ProcessIdConverter"/>
	<property name="APP_NAME" value="app"/>
	<property name="LOG_FILE" value="/app/${APP_NAME}"/>
    <appender name="CustomConsoleAppender" class="io.github.aliyunmq.logback.extensions.CustomConsoleAppender">
        <encoder>
            <pattern>%yellow(%d{yyy-MM-dd HH:mm:ss.SSS,GMT+8}) %highlight(%-5p) %boldWhite([%pid]) %magenta([%t]) %boldGreen([%logger{12}#%M:%L]) - %m%n
            </pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>
    <appender name="DefaultAppender" class="org.apache.rocketmq.logging.ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <File>
            ${LOG_FILE}/rocketmq-client/rocketmq-client.log
        </File>
        <rollingPolicy class="org.apache.rocketmq.logging.ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>
                ${LOG_FILE}/rocketmq-client/rocketmq-client-%d{yyyyMMdd}.%i.log.zip
            </fileNamePattern>
			<maxFileSize>200MB</maxFileSize>
            <maxHistory>366</maxHistory>
            <totalSizeCap>10000GB</totalSizeCap>
        </rollingPolicy>
		<encoder class="org.apache.rocketmq.logging.ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyy-MM-dd HH:mm:ss.SSS,GMT+8} %-5p [%t] [%logger{12}#%M:%L] - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>
    <root level="${rocketmq.log.level:-info}">
        <appender-ref ref="CustomConsoleAppender"/>
        <appender-ref ref="DefaultAppender" additivity="false"/>
    </root>
</configuration>

参考文章