現有一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" />--> <!--<!–可配置多個大數據入口–>--> <!--<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>
以後編譯放服務器打包放服務器重啓,再查看日誌文件發現生成成功了。異步
爲何本地以前就能夠還沒找到緣由測試