linux 查詢 java 日誌輸出兩份日誌
阿新 • • 發佈:2019-02-07
在 linux 中,我們經常會在執行一個 jar 程式之後隨即開啟它的 tail -f /xxx/out.log 功能,然後我們就發現一個奇怪的現象,就是所有的日誌都被輸出兩行,而且日誌的內容都是一樣的,這個很奇怪,為什麼呢?
通常我們的啟動指令碼這麼寫:
#!/bin/sh
java -jar dataInsertKeyword.jar &
tail -f /data/logs/dataInsert/dataInsert.log
因為我們通常在配置 log4j.properties 檔案的時候就指定的如下的輸出格式
#config root logger log4j.rootLogger = DEBUG,stdout,rolling_file # Console Appender # log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.encoding=UTF-8 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n log4j.appender.stdout.Threshold=INFO # Rolling File # log4j.appender.rolling_file=org.apache.log4j.DailyRollingFileAppender log4j.appender.rolling_file.Threshold=INFO log4j.appender.rolling_file.encoding=UTF-8 #windows os log4j.appender.rolling_file.File=/data/logs/out.log #linux os #log4j.appender.rolling_file.File=/data/default/default.log log4j.appender.rolling_file.DatePattern='_'yyyy-MM-dd_HH log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout log4j.appender.rolling_file.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n
這樣就導致一個問題,本身在我們啟動程式的時候,日誌已經被輸出到了 stdout 了,stdout 就是輸出到控制檯的意思,本來就輸出一次了,然後我們又執行了
tail -f /data/logs/dataInsert/dataInsert.log
命令,吧日誌又輸出一次,所以我們會看到日誌被列印兩次,實際上是一次,只不過我們看到了兩次而已。