Spring Boot 整合 log4j 实现日志管理

摘要:最近有时间,系统的学习了一下Spring Boot框架,感觉Spring Boot很好的集成了各种框架和组件,之前我们用Spring的时候,要配置好的依赖和xml文件,现在使用Spring Boot,只需要一些少量的配置就可以实现。今天我们来看下Spring Boot 配合log4j实现日志输出。


我们只是,在项目开发中,日志输出是比不可少的,至少我是这么认为的,尤其是在联调和测试的时候,尤其重要,方便排查问题。所以掌握不同级别的日志输出到不同的文件中是很有必要的。下面我们来看下Spring Boot 整合log4j实现的日志输出。


一:首先新建一个jar项目,如下图:



二:添加log4j的依赖,如下pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <groupId>com.micai</groupId>
    <artifactId>micai-springboot-log4j-8</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modelVersion>4.0.0</modelVersion>

    <packaging>jar</packaging>

    <name>micai-springboot-log4j-8</name>
    <url>http://maven.apache.org</url>

    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.6.RELEASE</version>
    </parent>

    <dependencies>
        <!-- Spring Boot web依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Spring Boot log4j依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
        </dependency>
    </dependencies>
</project>

三:新增log4j.properties配置文件:

# LOG4J配置
log4j.rootCategory=INFO, stdout, file

# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# root日志输出到文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=/data/logs/springboot-log4j-all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# 按不同package进行输出
# com.micai包下的日志配置
log4j.category.com.micai=DEBUG, didifile

# com.micai下的日志输出
log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.didifile.file=/data/logs/springboot-log4j-my.log
log4j.appender.didifile.DatePattern='.'yyyy-MM-dd
log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

# ERROR级别输出到特定的日志文件中
log4j.logger.error=errorfile
# error日志输出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=/data/logs/springboot-log4j-error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n



四:具体打印日志的java类,如下:

package com.micai.springboot.web;

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

/**
 * @author zhaoxinguo on 2017/8/21.
 */
@RestController //提供实现了REST API,可以服务JSON,XML或者其他。这里是以String的形式渲染出结果。
public class HelloWorldController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("/") //提供路由信息,”/“路径的HTTP Request都会被映射到sayHello方法进行处理。
    public String sayHello(){
        logger.info("hello world");
        return "Hello,World!";
    }

}

五:最后生成的日志文件,如下:


特别提醒Spring Boot 只有1.3.x和1.3.x以下版本才支持log4j的日志配置,1.3.x以上版本只支持log4j2,logback的日志配置


源码地址:https://gitee.com/micai/micai-springboot/tree/master/micai-springboot-log4j-8




猜你喜欢

转载自blog.csdn.net/sxdtzhaoxinguo/article/details/78456810