2013-05-30 336 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。