我正在处理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
答案 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>