slf4j日志文件丢失

时间:2015-04-24 14:02:07

标签: java maven log4j slf4j

我试图在maven项目中将某些内容记录到文件中。 我发现" howto"这里: Where does the slf4j log file get saved?

但由于某些原因,它无法工作(我无法找到日志文件),这是我的错误?

这是我的pom.xml

    <!-- Logger -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>

这是我的log4j.properties

log4j.rootLogger=DEBUG, STDOUT, file

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=mylogs.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%nF

这是我的应用:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {

    // Log
    private static final Logger log = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        log.info("App started");

        Worker worker = new Worker();
        worker.doWork();
        log.debug("worker finished job");

        log.debug("Main ends here");

    }
}

1 个答案:

答案 0 :(得分:2)

您的项目可能包含包含log4j.properties/xml文件的依赖项。这可能会覆盖您提供的属性。为了检查这一点,首先尝试使用log4j配置的文件使用不同的名称:将其重命名为例如app-log4j.properties并在发布时指定:-Dlog4j.configuration=app-log4j.properties。如果确实有效,那么确实存在冲突。最好的方法是从依赖项中删除log4j.properties,但如果不可能(例如3d-party lib),则考虑将上面概述的log4j配置文件名永久更改。

通常,mylogs.log应位于您启动程序的目录中。例如,如果它是从IDE(例如,IDEA)启动的,则应在项目目录中创建日志文件。如果您自己从target/classes的命令行执行此操作,则日志文件将分别写入该目录。