【问题标题】:slf4j log file missingslf4j 日志文件丢失
【发布时间】:2015-07-03 04:17:06
【问题描述】:

我正在尝试将某些内容记录到 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");

    }
}

【问题讨论】:

  • log4j.properties 文件在哪个目录?另外,检查类路径。它是否同时包含jcl-over-slf4jcommons-logging?如果答案是肯定的,则在必要时使用排除项删除commons-logging。我的经验是这两个库不能很好地协同工作,因此我的日志文件没有显示出来。
  • log4j.propertiessrc\main\resources,有commons-logging,没有jcl-over-slf4j。删除commons-logging进行测试,仍然没有日志文件:(
  • 您在控制台中看到日志吗?
  • 您的项目可能包含一个包含 log4j.properties/xml 文件的依赖项。这可能会覆盖您提供的属性。有过一次。
  • @yozh 我想,这可能是问题所在,但我对 maven 还很陌生,我该怎么办?

标签: java maven log4j slf4j


【解决方案1】:

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

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

【讨论】:

  • 嗯,我很明白,我什至在“我的通勤者”中搜索过这个日志文件。没有结果...
猜你喜欢
  • 1970-01-01
  • 2021-07-08
  • 2015-12-30
  • 2014-04-08
  • 2012-03-28
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
相关资源
最近更新 更多