2015-10-23 58 views
1

我在使用log4j創建日誌文件並保存到日誌文件時遇到問題。控制檯appender工作正常,但我不能讓它創建或保存日誌到一個文件。Log4j保存到文件問題

的jar文件是在正確的類路徑,我覺得我已經嘗試了一切(除了什麼工作-_-)

希望你們能幫助,撕裂我的頭髮了!

Log4j.properties文件位於程序的根文件夾中。

Log4j.properties文件。

#log4j.rootLogger=TRACE, file 
#log4j.rootLogger=DEBUG, file 
log4j.rootLogger=INFO, file 
log4j.appender.file=org.apache.log4j.FileAppender 
log4j.appender.file.File=thisLog.log 
#log4j.appender.file.MaxBackupIndex=2 
#log4j.appender.file.MaxFileSize=1024KB 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%t @ %F:%M:%L] %m%n 
log4j.appender.file.ImmediateFlush=true 
log4j.rootLogger=INFO, con 
log4j.appender.con=org.apache.log4j.ConsoleAppender 
#log4j.appender.con.MaxBackupIndex=2 
#log4j.appender.con.MaxFileSize=1024KB 
log4j.appender.con.layout=org.apache.log4j.PatternLayout 
log4j.appender.con.layout.ConversionPattern=%d{ISO8601} %-5p [%t @ %F:%M:%L] %m%n 

Java代碼:

static final Logger logger = Logger.getLogger(TgsSim2.class); 

public static void main(String[] args) throws IOException 
{ 
    PropertyConfigurator.configure("log4j.properties"); 

    logger.info("THIS IS A TEST USING .INFO"); 
    logger.debug("THIS IS A TEST USING .DEBUG"); 
    logger.warn("THIS IS A TEST USING .WARN"); 

    new TgsSim2(); 

} 

工作液:

#Root logger option 
log4j.rootLogger=DEBUG, stdout, file 
# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n 
# Redirect log messages to a log file, support file rolling. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=myLog.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=3 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n 
+0

您試圖使用哪種Log4j版本? –

+0

我正在使用Log4j 1.2.17 –

回答

0

根記錄選項

log4j.rootLogger=INFO, file, stdout 

直接日誌消息發送到日誌文件

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\logging.log 
log4j.appender.file.MaxFileSize=10MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

直接日誌消息同時使用控制檯和文件標準輸出

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

嘗試登錄如果你在控制檯中看到某些東西,並且d不會看到創建的文件,然後確保您的程序具有您的日誌目錄的寫入權限

0

根據您使用的不是正確的Appender的apache Log4j手冊。 RollingFileAppender 使用log4j.appender.file=org.apache.log4j.RollingFileAppender而不是log4j.appender.file=org.apache.log4j.FileAppender 將您的Log.properties修改爲此。

#Root logger option 

log4j.rootLogger=DEBUG, stdout, file 
# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c{1}(%L): - %m%n 

# Redirect log messages to a log file, support file rolling. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=myLog.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=3 
+0

您可以添加一些有關已更改或錯誤的信息嗎? –

+0

它現在給我一個錯誤 log4j:錯誤無法找到鍵的值log4j.appender.file.layout log4j:錯誤無法找到鍵的值log4j.appender.file.layout log4j:錯誤沒有佈局設置爲^ 編輯2:我在佈局和轉換模式中添加了它,但它仍然存在將消息保存到文件 –

+0

替換%d {yyyy-MM-dd HH的%d {ISO8601}毫米:SS.SSS} –

2

感謝您的幫助大家。我最終得到了它的工作。

如果有其他人遇到同樣的問題,那麼執行該技巧的log4j.properties文件將如下所示。

#Root logger option 
log4j.rootLogger=DEBUG, stdout, file 
# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n 
# Redirect log messages to a log file, support file rolling. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=myLog.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=3 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n 
0

我覺得log4j.properties中有重複行。
一旦刪除它並檢查
log4j.rootLogger =信息,con