SpringBoot 集成log4j2

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

首先介绍下常见的开源日志组件:
log4j是apache实现的一个开源日志组件
logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现
Log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活

然后了解下slf4j:
slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因此slf4j接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback),使用接口的好处是当项目需要更换日志框架的时候,只需要更换jar和配置,不需要更改相关java代码。

下面介绍SpringBoot如何继承log4j2

一、项目中添加maven依赖


		
			org.springframework.boot
			spring-boot-starter-web
			
				
					
					org.springframework.boot
					spring-boot-starter-logging
				
			
		

		
		
			org.springframework.boot
			spring-boot-starter-log4j2
		

注:SpringBoot默认使用logback作为日志组件,需先排除

二、在resources目录下新建log4j2.xml配置文件

  • 配置文件的格式:log2j配置文件可以是xml格式的,也可以是json格式的,
  • 配置文件的位置:log4j2默认会在classpath目录下寻找log4j2.xmllog4j.jsonlog4j.jsn等名称的文件,如果都没有找到,则会按默认配置输出,也就是输出到控制台



    
    
        logs
        
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} %L %M - %msg%xEx%n
    
    
    
        
        
            
            
            
            
        
        
        
        
        
            
        
        
        
            
            
        
        
        
            
            
            
        
    
    
    
        
        
        
            
            
            
            
            
        
        
        
        
        
        
    

二、在application.yml或properties中配置log4j2.xml的目录

########################################################
### log4j2配置
########################################################
logging:
  config: classpath:log/log4j2_dev.xml

注意:如使用yml格式匹配值文件,需要额外引入依赖库,如下:


		
			com.fasterxml.jackson.core
			jackson-databind
		
		
			com.fasterxml.jackson.dataformat
			jackson-dataformat-yaml
		

三、在代码中使用

package com.yuq.sunrise.common.controller;

import com.alibaba.druid.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author :yuq
 * @date :Created in 2019/6/8 23:09
 * @description:Controller公共组件
 * @modified By:
 * @version: 1.0$
 */
public abstract class AbstractController {

    /**
     * create by: yuq
     * description:
     * slf4j是对所有日志框架制定的一种规范、标准、接口,并不是具体的实现,所以为了实现通用这里采用slf4j,
     * 当项目需要更换日志框架的时候,只需要更换jar和配置,不需要更改相关java代码
     * create time: 2019-06-08 23:18
     *
     * @param null
     * @return 
     */
    protected Logger logger = LoggerFactory.getLogger(getClass());

注意:这里引入的Logger是slf4j的规范,也可以引入log4j;引入slg4j是为了通用,以免更换jar后需要重新改动。

四、启动项目看下效果

SpringBoot 集成log4j2_第1张图片

SpringBoot 集成log4j2_第2张图片

转载于:https://my.oschina.net/yq0128/blog/3059859

你可能感兴趣的:(SpringBoot 集成log4j2)