<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringBoot集成RocketMQ,rocketmq_client.log日志文件配置

          共 3089字,需瀏覽 7分鐘

           ·

          2020-11-09 00:20

          點擊上方「藍字」關注我們

          SpringBoot項目集成rocketmq-client

          <dependency>
          ????<groupId>org.apache.rocketmqgroupId>

          ????<artifactId>rocketmq-clientartifactId>
          ?????<version>4.7.0version>
          dependency>

          項目啟動時會在${user.home}/logs目錄下創(chuàng)建一個rocketmq_client.log日志文件,文件全路徑是:${user.home}/logs/rocketmqlogs/rocketmq_client.log。如果一個系統(tǒng)部署多個微服務話,會導致所有的微服務的RocketMQ的日志都會打印到該文件里,不容易定位到底是哪個微服務的RocketMQ ?Client出現(xiàn)了錯誤。所以需要配置rocketmq_client.log日志目錄到各自微服務的日志目錄加以區(qū)分。


          通過源碼org.apache.rocketmq.client.log.ClientLogger可以看到,在項目啟動時會讀取是否啟動slf4j配置,讀取的配置名稱是:

          rocketmq.client.logUseSlf4j

          如果該配置為true的話,則會直接獲取logger名稱為RocketmqClientAppender名稱為RocketmqClientAppender的配置,以下是源碼:

          public?class?ClientLogger?{

          ????public?static?final?String?CLIENT_LOG_USESLF4J?=?"rocketmq.client.logUseSlf4j";
          ????public?static?final?String?CLIENT_LOG_ROOT?=?"rocketmq.client.logRoot";
          ????public?static?final?String?CLIENT_LOG_MAXINDEX?=?"rocketmq.client.logFileMaxIndex";
          ????public?static?final?String?CLIENT_LOG_FILESIZE?=?"rocketmq.client.logFileMaxSize";
          ????public?static?final?String?CLIENT_LOG_LEVEL?=?"rocketmq.client.logLevel";
          ????public?static?final?String?CLIENT_LOG_ADDITIVE?=?"rocketmq.client.log.additive";
          ????public?static?final?String?CLIENT_LOG_FILENAME?=?"rocketmq.client.logFileName";
          ????public?static?final?String?CLIENT_LOG_ASYNC_QUEUESIZE?=?"rocketmq.client.logAsyncQueueSize";
          ????public?static?final?String?ROCKETMQ_CLIENT_APPENDER_NAME?=?"RocketmqClientAppender";

          ????private?static?final?InternalLogger?CLIENT_LOGGER;

          ????private?static?final?boolean?CLIENT_USE_SLF4J;

          ????//private?static?Appender?rocketmqClientAppender?=?null;

          ????static?{
          ????????//?獲取是否啟動slf4j配置
          ????????CLIENT_USE_SLF4J?=?Boolean.parseBoolean(System.getProperty(CLIENT_LOG_USESLF4J,?"false"));
          ????????if?(!CLIENT_USE_SLF4J)?{
          ????????????InternalLoggerFactory.setCurrentLoggerType(InnerLoggerFactory.LOGGER_INNER);
          ????????????CLIENT_LOGGER?=?createLogger(LoggerName.CLIENT_LOGGER_NAME);
          ????????????createLogger(LoggerName.COMMON_LOGGER_NAME);
          ????????????createLogger(RemotingHelper.ROCKETMQ_REMOTING);
          ????????}?else?{
          ????????????//?獲取logger
          ????????????CLIENT_LOGGER?=?InternalLoggerFactory.getLogger(LoggerName.CLIENT_LOGGER_NAME);
          ????????}
          ????}

          ????//?.........
          }

          通過以上源碼分析可以看到如下一小段

          System.getProperty(CLIENT_LOG_USESLF4J,?"false")

          所有在SpringBoot項目啟動類中添加以下代碼:

          public?class?Application?{
          ????public?static?void?main(String[]?args)?{
          ???????//添加配置
          ????????System.setProperty(ClientLogger.CLIENT_LOG_USESLF4J,"true");
          ????????SpringApplication.run(Application.class,?args);
          ????}
          }

          添加完以上代碼后,然后在logback-spring.xml配置文件中配置日志的輸出,具體配置如下:


          ????<appender?name="RocketmqClientAppender"?class="ch.qos.logback.core.rolling.RollingFileAppender">
          ????????<file>${LOG_DIR}/rocketmq_client.logfile>

          ????????<rollingPolicy?class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
          ????????????<fileNamePattern>${LOG_DIR}/history/rocketmq_client.%d{yyyyMMdd}.%i.logfileNamePattern>
          ????????????<maxFileSize>1024MmaxFileSize>
          ????????????
          ????????????<maxHistory>30maxHistory>
          ????????rollingPolicy>
          ????????<encoder?charset="UTF-8">
          ????????????<pattern>%d{yy-MM-dd.HH:mm:ss.SSS}?[%-16t]?%-5p?%-22c{0}?%X{ServiceId}?-?%m%npattern>
          ????????encoder>
          ????appender>
          ????<logger?name="RocketmqClient"?additivity="false">
          ????????<level?value="warn"?/>
          ????????<appender-ref?ref="RocketmqClientAppender"/>
          ????logger>

          配置完畢,啟動項目可以看到日志文件已經(jīng)輸出到指定的位置了。


          備注:

          ?System.setProperty(ClientLogger.CLIENT_LOG_USESLF4J,"true");

          這段代碼配置java的系統(tǒng)屬性,也可以通過JAVA_OPTS方式設置。即在SpringBoot的啟動腳本例如Shell腳本加上:

          java?-jar?-Drocketmq.client.logUseSlf4j=true??xxx-1.x.x.jar

          掃碼二維碼

          獲取更多精彩

          Java樂園

          有用!分享+在看?
          瀏覽 80
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费黄色片视频网站 | 黄色乏人妻 | 欧美淫秽视频在线 | 亚洲中文字幕视频国产最新 | 亚洲乱伦电影 |