3

我正在尝试使用 log4j-1.2.8.jar 在文件中写入日志。

这是我在类路径中的 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);

    ....

    }

}

该文件未创建,我得到的唯一输出是在控制台中。有什么问题吗?

非常感谢

4

5 回答 5

4

我遇到了类似的问题,并注意到问题出在附加的 .jar 上。如果您将 slf4j 与 log4j 一起使用,则删除 slf4j-simple.jar(如果已添加)并确保您的类路径中有 slf4j-log4j12-xx.jar。

于 2015-04-28T07:36:25.550 回答
1

我刚刚按原样检查了您的代码。它工作得非常好。

尝试更改日志文件的路径,可能您没有在这些位置写入的权限。

于 2013-05-30T11:02:21.010 回答
1

这是我们的 log4j 属性文件之一的片段:

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

这将在 user.home 下生成日志文件,因此它也可以在 linux 上运行。如果您在 Windows 上的用户名是“JEFF”,那么这将在以下路径下创建一个文件夹:

C:\Users\JEFF\

希望这会有所帮助。

于 2013-05-30T10:59:25.950 回答
0

代码工作得很好,所以你错过了一些东西。确保文件名是正确的 log4j.properties(例如在 netbeans 中,一个常见的错误是创建一个属性文件 e 放置属性扩展名,从而导致 log4j.properties.properties)希望这会有所帮助。

于 2013-05-30T11:29:45.213 回答
-1

只需添加到上面的答案,请确保log4j.properties文件存储在 src 文件夹中。否则它不会被拾取,并且会调用默认值。

于 2014-01-22T11:27:38.413 回答