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示例


                  class="ch.qos.Logback.core.rolling.RollingFileAppender">
        /Users/mark.yky/IdeaProjects/mqClientest/Logs/rocketmq_Client. Log
        true
       
            /Users/mark.yky/IdeaProjects/mqClientest/otherdays/rocketmq_Client.%i.Log
           

            1
            20
       

                      class="ch.qos.Logback.core.rolling.SizeBasedTriggeringPolicy">
            100MB
       
       
            %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
            UTF-8
       

   

   
        
           
                %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
           

       

   

   
        
       
   

   
       
       
   

   
       
       
       
   


 

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

你可能感兴趣的:(RocketMQ,开发语言,rocketmq,java-rocketmq,后端)