Spring boot Maven找不到spring-boot-starter-log4j2 JAR包问题,使用slf4j的logback输出日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a78270528/article/details/80897177
一、问题描述

把Springboot版本升级了下,运行发现报了这样一个错误:

'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-log4j:jar is missing.
报错的提示是spring-boot-starter-log4j这个Jar找不到。 

Maven是如下配置:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>

<dependencies>

    ........

    <dependency>  
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion> 
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
    </dependency>
</dependencies> 

二、问题解决

到Maven respository查询了下,Log4j最新版本为1.3.8.RELEASE版本,而最新SpringBoot版本为1.4.2.RELEASE,对Log4j不提供Jar包,所以找不到这个版本的Jar包。


SpringBoot本身集成了日志系统,因此采用官方推荐的Logback。 

Logback已经集成到spring-boot-starter里面了,所以不需要再配置,直接就可以使用。

三、使用LOG4J的Logback

1、SpringBoot提供了一套日志系统,项目中使用的是slf4j的logback来输出日志,效率高,logback是最优的选择。下面是logback.xml配置文件。

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

    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
    <property name="LOG_PATTERN"
              value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />

    <!-- 开发、测试环境 -->
    <springProfile name="dev,test">
        <!-- 定义日志存储的路径,不要配置相对路径 -->
    	<property name="FILE_PATH" value="D:/logs/demo3/cccf.%d{yyyy-MM-dd}.%i.log" />
    </springProfile>
    
    <!-- 生產環境 -->
    <springProfile name="pro">
        <!-- 定义日志存储的路径,不要配置相对路径 -->
    	<property name="FILE_PATH" value="/user/lib/cccf/logs/cccf.%d{yyyy-MM-dd}.%i.log" />
    </springProfile>

    <!-- 控制台输出日志 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile是用来切分文件的 -->
    <appender name="rollingFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${FILE_PATH}
            </fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日志文件的最大大小 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!-- project default level -->
    <logger name="com.hiynn.cccf" level="INFO" />

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
    </root>
</configuration>

如上,已经详细做了注释,logback.xml文件中主要是用来配置日志文件的输出格式,输出路径,保存时间,日志文件大小,以及日志的输出级别。默认的是INFO级别,我们也可以设置DEBUG,ERROR级别,看具体需要。一般项目部署到生产环境后,换成ERROR级别,在开发的时候一般设置成INFO级别即可。

    <!-- 开发、测试环境 -->
    <springProfile name="dev,test">
        <!-- 定义日志存储的路径,不要配置相对路径 -->
    	<property name="FILE_PATH" value="D:/logs/demo3/cccf.%d{yyyy-MM-dd}.%i.log" />
    </springProfile>
    
    <!-- 生產環境 -->
    <springProfile name="pro">
        <!-- 定义日志存储的路径,不要配置相对路径 -->
    	<property name="FILE_PATH" value="/user/lib/cccf/logs/cccf.%d{yyyy-MM-dd}.%i.log" />
    </springProfile>

2、application.yml配置文件

如上,文件中LOG文件的存储路径,开发测试环境和生产环境做了不同的配置,springProfile需要有对应的配置,也就是需要有开发和生产两个不同的springboot的配置文件,然后在application.properties配置文件中配置:

#开发环境配置文件
spring.profiles.active=dev

#mybatis配置
logging.config= src/main/resources/config/logback.xml

文件存放目录如下:

3、代码中使用Logger来打印信息

在代码中,我们一般使用Logger对象来打印出一些log信息,可以指定打印出的日志级别,也支持占位符,很方便。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

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

    @RequestMapping("/testLog")
    public String testLog() {
        logger.debug("=====测试日志debug级别打印====\n");
        logger.info("======测试日志info级别打印=====\n");
        logger.error("=====测试日志error级别打印====\n");

        // 可以使用占位符打印出一些参数信息
        String str = "blog.csdn.com/a78270528";
        logger.info("======欢迎访问二一点的博客:{}\n", str);
        return null;
    }
}
SpringBoot中的slf4j日志配置就大概介绍这么多,已经足够用了,在项目中使用的很频繁,很方便。

猜你喜欢

转载自blog.csdn.net/a78270528/article/details/80897177
今日推荐