rocketmq客户端会打印一些日志如消费进度,心跳等,默认的是滚动10个日志文件,每个100MB,又一次看到这个日志目录有几十GB,手动删除,但是悲剧的是rocketmq没有释放这个日志目录,导致不能真正的释放磁盘空间。
于是研究了下怎么配置rocketmq客户端日志配置。
客户端日志配置ClientLogger这个类里,支持log4j和logback两种日志,默认是从缺省的日志文件加载,rocketmq-client这个工程的类目下有两个日志配置文件。
其中logbak日志配置内容如下:
<configuration>
<appender name="RocketmqClientAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${client.logRoot}/rocketmq_client.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${client.logRoot}/otherdays/rocketmq_client.%i.log
</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>${client.logFileMaxIndex}</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<logger name="RocketmqCommon" additivity="false">
<level value="${client.logLevel}"/>
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<logger name="RocketmqRemoting" additivity="false">
<level value="${client.logLevel}"/>
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<logger name="RocketmqClient" additivity="false">
<level value="${client.logLevel}"/>
<appender-ref ref="RocketmqClientAppender"/>
</logger>
</configuration>
首先禁用掉rocektmq自己加载日志文件,有一个isloadconfig属性默认为true,可以在自己代码设置为false
Boolean isloadconfig =
Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true"));
禁用掉rocketmq自己加载后可以自行根据自己系统的日志运行方式配置。如可以配置成按天滚动