解决rocketmq-client日志保存路径的问题
rocketmq-client日志保存路径
由于使用rocketmq-client会生成一个rocketmq_client.log日志文件,一般默认存于系统盘内,且持续增长速度较快,为便于清理且避免影响操作系统资源使用,建议手动设置其日志存储路径为当前程序运行目录下的logs文件夹。
参考操作方式:
系统启动时代码显式设置全局变量“rocketmq.client.logRoot”,
示例:
System.setProperty("rocketmq.client.logRoot","logs/");
Springboot项目可在启动类的main方法中设置,已验证有效。
参考示例:
public static void main(String[] args) throws Throwable { System.setProperty("rocketmq.client.logRoot","logs/"); SpringApplication.run(Application.class, args); }
关于rocketmq-client日志路径及其他配置详情,可见源码com.alibaba.rocketmq.client.log.ClientLogger中相关代码及其日志配置文件log4j_rocketmq_client.xml或logback_rocketmq_client.xml,
见下图:
rocketmq-client 日志问题处理
使用rocketmq后,默认会在{user.home}\logs\rocketmqlogs 目录下生成大量的mq跟踪日志,可以通过以下方式禁用或改变存储目录
方式一: rocketmq启用slf4j【推荐】
#设置系统属性
rocketmq.client.logUseSlf4j=true
启动参数 添加:
-Drocketmq.client.logUseSlf4j=true 【推荐】
或者启动类添加:
System.setProperty("rocketmq.client.logUseSlf4j","true")
#logback日志配置
#Rocketmq apppender配置
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.base}/rocketmq.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.base}/%d{yyyy-MM-dd}/rocketmq-%i.%d{yyyy-MM-dd}.log.gz </fileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>30MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>${pattern}</pattern> </encoder> </appender>
#Rocketmq logger配置
<logger name="RocketmqClient" additivity="false"> <level value="warn" /> <appender-ref ref="RocketmqClientAppender"/> </logger>
方式二: 更改默认rocketmq路劲和级别
#设置系统属性
rocketmq.client.logRoot={日终路径} rocketmq.client.logLevel={日志等级}
建议启动参数添加:
-Drocketmq.client.logRoot=/opt/appl/tomcat/logs/{应用名} -Drocketmq.client.logLevel=warn
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)