未加载Logback配置文件

时间:2018-01-26 08:43:40

标签: java maven logback

我正在处理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 [主要]警告com.example.entry.Main - hi
  09:34:27.298 [主要] ERROR com.example.entry.Main - hi

输出

  

09:34:27.296 [main] DEBUG com.example.entry.Main - hi
  09:34:27.298 [主要] INFO com.example.entry.Main - hi
  09:34:27.298 [主要]警告com.example.entry.Main - hi
  09:34:27.298 [主要] ERROR com.example.entry.Main - hi

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您的xml配置文件缺少<configuration>根元素:

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我认为您应该在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>

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您的一个依赖项中也可能包含了logback,并且该构建从该依赖项(而不是您提供的依赖项)中选择了logback配置。

您可以检查:

mvn dependency:tree -Dverbose

如果您发现,该登录将多次包含在结果中,然后将其从pom.xml中的依赖项中排除:

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