2013-05-30 279 views
3

我想在log4j-1.2.8.jar文件中寫入日誌。Log4j沒有寫入文件

這裏是我的log4j.properties文件在類路徑中

log4j.rootLogger=INFO, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\temp\\loging.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
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.logger.mypackage.com=DEBUG, myappender 
log4j.additivity.mypackage.com=false 

log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.myappender.datePattern='-'dd'.log' 
log4j.appender.myappender.File=C:\\temp\\loging2.log 
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout 
log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n 

這是java代碼的片段,我嘗試輸出到文件:

public class MyClass implements Serializable 
{ 
    private static Logger logger=Logger.getRootLogger(); 

    .... 
    private void myMethod() { 
    .... 

     logger.info("info"+sql); 

    .... 

    } 

} 

文件沒有創建,我得到的唯一輸出是在控制檯中。 有什麼不對嗎?

非常感謝

+2

它對我來說很好。根本沒有任何問題。 – maba

+0

你的temp可以是windows/temp嗎? –

回答

1

這是我們從log4j屬性的一個片段文件:

log4j.appender.ConsoleFileAppender.File = $ {}的user.home/bqjdbc/bqjdbconsole.log

這將在user.home下生成日誌文件,所以它也可以在Linux上運行。 如果你的用戶名是「傑夫」在Windows上,那麼這將做如下路徑下的文件夾:

C:\Users\JEFF\ 

希望這將有助於。

1

我剛剛檢查了您的代碼原因是它是。它工作得很好。

嘗試更改日誌文件的路徑,可能您沒有在這些位置寫入的權限。

0

代碼工作得很好,所以你錯過了一些東西。 確保文件名是正確的log4j.properties(例如在NetBeans中,常見的錯誤是創建一個屬性文件e放置屬性擴展,從而導致log4j.properties.properties) 希望這有助於。

-1

只需要添加上面的答案,請確保log4j.properties文件存儲在src文件夾中。否則它不會被拿起,並且默認會被調用。

4

我有類似的問題,並注意到問題是附加的.jars。如果您使用的是slf4j和log4j,那麼刪除slf4j-simple.jar(如果已添加),並確保您的類路徑中包含slf4j-log4j12-xx.jar。