RocketMQ自定义日志输出

        Log是监控系统状态,排查问题的重要手段,RocketMQ的默认Log存储位置是:${user.home}/Logs/rocketmqLogs,Log配置文件的设置可以通过JVM启动参数、环境变量、代码中的设置语句这三种方式来配置。RocketMQ日志相关的代码在org.apache.rocketmq.Client.Log ClientLogger类中,从源码中可以看到所有的配置选项。比如想更改RocketMQ Client的Log level,可以通过-Drocketmq.Client.LogLevel来设置,或者在程序启动时使用System.setProperty("rocketmq.Client.LogLevel","WARN")来设置。RocketMQ的Log实现是基于slf4j的,支持Logback、Log4j。RocketMQ Client里已经有Logback的相关包,可以直接使用Logback。我们可以通过Logback的配置文件对日志进行细粒度的控制。接下来以一个maven项目为例,具体说明如何使用自定义的Log配置。首先需要把rocketmq.Client.Log.loadconfig参数设置为false,可以在程序中使用System.setProperty("rocketmq.Client.Log.loadconfig","false")语句,或者在JVM启动时使用-D参数来设置。然后把Logback.xml放到maven项目的resources文件夹下。在Logback.xml示例配置里,在原有RocketMQ日志的基础上,增加了STDOUT输出,这样可以把RocketMQ的日志输出到应用系统console中,便于调试时发现问题,如代码清单1所示。

代码清单1 Logback.xml示例

<configuration>
    <appender name="RocketmqClientAppender"
              class="ch.qos.Logback.core.rolling.RollingFileAppender">
        <file>/Users/mark.yky/IdeaProjects/mqClientest/Logs/rocketmq_Client. Log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.Logback.core.rolling.FixedWindow-RollingPolicy">
            <fileNamePattern>/Users/mark.yky/IdeaProjects/mqClientest/otherdays/rocketmq_Client.%i.Log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</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>
    <appender name="STDOUT" class="ch.qos.Logback.core.ConsoleAppender">
        <layout class="ch.qos.Logback.classic.PatternLayout">
            <Pattern>
                %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
            </Pattern>
        </layout>
    </appender>
    <Logger name="RocketmqCommon" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="RocketmqClientAppender"/>
    </Logger>
    <Logger name="RocketmqRemoting" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="RocketmqClientAppender"/>
    </Logger>
    <Logger name="RocketmqClient" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="RocketmqClientAppender"/>
        <appender-ref ref="STDOUT"/>
    </Logger>
</configuration>

 

有了自定义的Log配置,就可以根据实际情况,设置每个模块的输出Level,或者把日志输出到特定的位置。具体的设置方法可以参考Logback的日志配置文档:Chapter 3: Configuration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hamilton_Huan

原创不易,结合业务原创更不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值