一第二天志文件分割修復過程

         現有一springboot框架服務OrderReviewer,日誌框架是log4j2,以前是按天分割日誌,配置文件log4j2.xmlspring

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN">
    <properties>
        <!--定義本地存儲位置-->
        <property name="LOG_HOME">/tmp/logs/offcounter/OrderReviewer</property>
        <property name="LOG_TRANSFER_HOME">/tmp/logs/offcounter/Transfer</property>
        <!--定義應用名稱-->
        <property name="APP_NAME">OrderReviewer</property>
        <property name="TRANSFER_NAME">Transfer</property>
    </properties>
    <Appenders>
        <!--<Console name="CONSOLE" target="SYSTEM_OUT">-->
            <!--定義日誌格式-->
            <!--<PatternLayout-->
                    <!--pattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss} [%-5p] (%c{1}:%L) %m%n" />-->
        <!--</Console>-->
        <RollingRandomAccessFile name="RFILE"
                                 fileName="${LOG_HOME}/${APP_NAME}" filePattern="${LOG_HOME}/${APP_NAME}.%d{yyyy-MM-dd-HH}.log">
            <PatternLayout
                    pattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss} [%-5p] (%c{1}:%L) %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                                           modulate="true" />
            </Policies>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="TFILE"
            fileName="${LOG_TRANSFER_HOME}/transferData.log" filePattern="${LOG_TRANSFER_HOME}/${TRANSFER_NAME}.%d{yyyy-MM-dd}.log">
            <PatternLayout
              pattern="${TRANSFER_NAME} %-d{yyyy-MM-dd HH:mm:ss} [%-5p] (%c{1}:%L) %m%n" />

           <Policies>
               <TimeBasedTriggeringPolicy interval="1"
                                          modulate="true" />
          </Policies>
        </RollingRandomAccessFile>
        <!--<Flume name="eventLogger" compress="true">-->
            <!--<Agent host="localhost" port="41414" />-->
            <!--&lt;!&ndash;可配置多個大數據入口&ndash;&gt;-->
            <!--<Agent host="localhost" port="41414" />-->
            <!--<RFC5424Layout enterpriseNumber="18060" includeMDC="true"-->
                           <!--appName="${APP_NAME}" />-->
        <!--</Flume>-->
        <!--三個appender使用異步非阻塞方式-->
        <Async name="Async">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="RFILE" />
            <!--<appender-ref ref="eventLoggertLogger" />-->
        </Async>
    </Appenders>

    <Loggers>
        <!-- 數據遷移日誌單獨輸出 -->
        <Logger name="com.gf.offcounter.log.TransferDataLog" level="INFO" additivity="false">
                    <AppenderRef ref="TFILE"/>
        </Logger>
        <Root level="INFO">
            <AppenderRef ref="Async" />
        </Root>
    </Loggers>
</Configuration>

因爲數據量變大,但願按小時來切分,每小時生成一個日誌文件。apache

        百度查看及看官方文檔都是說filePattern設置到小時就ok。修改log4j2.xml,爲了測試須要,按每分鐘生成一個日誌文件springboot

filePattern="${LOG_TRANSFER_HOME}/${TRANSFER_NAME}.%d{yyyy-MM-dd-HH-mm}.log"

重啓。過幾分鐘看日誌文件,發現沒有生成OrderReviewer.2018-06-13-09.log的文件,重試了幾回都不行。嘗試用官方給的demo服務器

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" filePattern="logs/app-%d{yyyy-MM-dd-HH-mm}-%i.log.gz">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <CronTriggeringPolicy schedule="0 * * * * ?"/>
        <SizeBasedTriggeringPolicy size="2 MB"/>
      </Policies>
      <DirectWriteRolloverStrategy maxFiles="10"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

一樣的沒有按配置的時間生成日誌文件,本地測試發現是能夠按配置的時間生成日誌文件,再到f服務器嘗試仍是不行。app

      服務器上部署了幾個服務,把相同的log4j2.xml配置給另一個服務OrderConfig發現也能夠按分鐘生產日誌文件。比較兩個服務的環境配置,基本都同樣沒區別。再比較兩個服務引用的log4j包發現OrderReviwer服務比OrderConfig多了log4j-1.2.12.jar,在查導入log4j-1.2.12.jar的依賴框架

有多是jar包衝突了?去掉log4jdom

             <dependency>
	        <groupId>org.apache.kafka</groupId>
		<artifactId>kafka_2.10</artifactId>
		<version>0.8.0</version>
		<exclusions>
                 <exclusion>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
                 </exclusion>
                 <exclusion>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                </exclusion>
              </exclusions>	
	</dependency>

 以後編譯放服務器打包放服務器重啓,再查看日誌文件發現生成成功了。異步

    爲何本地以前就能夠還沒找到緣由測試

相關文章
相關標籤/搜索