【问题标题】:Logback configuration file not loaded未加载 Logback 配置文件
【发布时间】:2018-01-26 08:43:40
【问题描述】:

我正在开发一个 maven 项目,我使用 slf4j 执行日志记录,但我的问题是我的 logback.xml 配置未加载,它不会对我的项目生效。我的logback.xml 放在src/main/resources 文件夹中

依赖关系

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${logback.version}</version>
    </dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${jcloverslf4j.version}</version>
</dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE XML>
<configuration>

    <!-- Appenders -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
            by default -->
        <encoder>
            <pattern>[%d{dd-MM-yyyy HH:mm:ss.SSS}] [%-5level] [%logger{36}.%M\(%line\)] - %msg %n</pattern>
        </encoder>
    </appender>

    <!-- Application logger -->
    <logger name="com.example">
        <level value="info" />
    </logger>


    <!-- Root Logger -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

主类

public class Main {

    private static Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {

        logger.trace("hi");
        logger.debug("hi");
        logger.info("hi");
        logger.warn("hi");
        logger.error("hi");
    }
}

预期

09:34:27.298 [main] INFO com.example.entry.Main - hi
09:34:27.298 [main] 警告 com.example.entry.Main - hi
09:34:27.298 [main] 错误 com.example.entry.Main - hi

输出

09:34:27.296 [main] 调试 com.example.entry.Main - hi
09:34:27.298 [main] INFO com.example.entry.Main - hi
09:34:27.298 [main] 警告 com.example.entry.Main - hi
09:34:27.298 [main] 错误 com.example.entry.Main - hi

【问题讨论】:

  • 你能指定你期望的输出吗?
  • Main 类的包是什么?
  • @VladBochenin logger.info("hi"); logger.warn("你好"); logger.error("hi");
  • @AntonTupy com.example.entry.Main
  • logback.xml 是否包含在类路径中?您如何运行您的应用程序?

标签: java maven logback


【解决方案1】:

很可能,logback 也包含在您的依赖项之一中,并且构建从依赖项中获取 logback 配置,而不是您提供的配置。

您可以查看:

mvn dependency:tree -Dverbose

如果你发现结果中多次包含该 logback,则将其从 pom.xml 中的依赖项中排除:

<exclusions>
    <exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </exclusion>
</exclusions>

【讨论】:

    【解决方案2】:

    通过从 .m2 目录中删除 jar 文件解决了问题

    【讨论】:

      【解决方案3】:

      您的 xml 配置文件缺少 &lt;configuration&gt; 根元素:

      <configuration>
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      ...
      

      【讨论】:

      • 先生,如果您可以重新检查但有一个名为 的根元素
      【解决方案4】:

      根据文档https://logback.qos.ch/manual/configuration.html尝试替换

          <logger name="com.example">
              <level value="info" />
          </logger>
      

      <logger name="com.example" level="INFO"/>
      

      【讨论】:

      • 相同的输出,没有任何变化
      【解决方案5】:

      我认为您应该在 pom.XML 中使用以下内容

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      

      而不是

      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
          <version>${jcloverslf4j.version}</version>
      </dependency>
      

      【讨论】:

      • 相同的输出,没有任何变化
      • logback.versionjcloverslf4j.version 使用的版本是什么?我希望你的 Main 类在 com.example 包下?
      • logback.version : 1.1.2 jcloverslf4j.version : 1.7.9 包 com.example.entry;
      • 我想你的 Main 类在 com.example 包下?
      • 主类在com.example.entry包下
      【解决方案6】:

      检查类路径,它是否包含commons-logging 以及jcl-over-slf4j?如果是这样,请排除 commons-logging 并查看它是否有效。当应用程序具有两个依赖项时,我遇到了问题,它们似乎冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多