Spring Boot Log4j2的配置使用详解

后台程序开发及上线时,一般都会用到Log信息打印及Log日志记录,开发时通过Log信息打印可以快速的定位问题所在,帮助我们快捷开发。程序上线后如遇到Bug或错误,此时则需要日志记录来查找发现问题所在。

Spring Boot 可以集成很多不同的日志系统,其中最常用的Apache Log4j,而Log4j 2是Log4j的升级版本,Log4j 2相对于Log4j 1.x 有了很多显著的改善。所以这篇博客就直接来说说Spring Boot如何集成并配置使用Log4j2.

1. 导入Log4j2的包

如果你使用Gradle,则在 build.gradle 文件中添加以下依赖。示例代码中使用的是Gradle方式。

dependencies {
  // log4j2
  compile "org.apache.logging.log4j:log4j-api:2.8"
  compile "org.apache.logging.log4j:log4j-core:2.8"
  // 用来支持Logger中的Async
  compile 'com.lmax:disruptor:3.3.6'
}

如果你使用Maven,则在 pom.xml 文件中添加以下依赖。


 
  org.apache.logging.log4j
  log4j-api
  2.8
 

 
  org.apache.logging.log4j
  log4j-core
  2.8
 

 
  com.lmax
  disruptor
  3.3.6
 


2. 添加log4j2配置文件

在项目的resources资源文件根目录下创建 log4j2.xml 文件并复制以下代码到文件中。




  
  
    /home/kylin/log/knight/spring_log
    /home/kylin/log/knight/spring_log/7z
  

  
    
    
      
      
      
      
    

    
    
      
      
        
        
      
      
        
        
        
      
      
      
    

    
    
      
      
        
        
      
      
        
        
      
      
      
    
  

  
  
    
    
      
      
      
    
  


3. 编写Log4j2辅助类

做好以上的配置之后,我们可以编写一个辅助类,让我们更方便的使用Log4j2来记录日志。

在utils包中创建 L.java 类文件。

package com.spring.log4j2.utils;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * Logger 日志记录辅助类
 * 
 * Created by Kylin on 2017/5/11.
 */
public classL{

  private static final Logger LOGGER = LogManager.getLogger();

  privateL(){
    /* cannot be instantiated */
    throw new UnsupportedOperationException("cannot be instantiated");
  }

  publicstaticLoggergetLogger(){
    return LOGGER;
  }

  publicstaticvoidt(String msg){
    LOGGER.trace(msg);
  }

  publicstaticvoidd(String msg){
    LOGGER.debug(msg);
  }

  publicstaticvoidi(String msg){
    LOGGER.info(msg);
  }

  publicstaticvoidw(String msg){
    LOGGER.warn(msg);
  }

  publicstaticvoide(String msg){
    LOGGER.error(msg);
  }
}

编写完辅助类,使用起来就很简单了,通过下面的代码就可以轻松使用。

@Controller
public classWebController{
  @RequestMapping("/")
  publicStringindex(){
    String msg = "Spring Boot系列之Log4j2的配置及使用";
    L.t(msg);
    L.d(msg);
    L.i(msg);
    L.w(msg);
    L.e(msg);
    return "index";
  }
}

这里的辅助类只是写了一些基本的使用方法,你可以根据你的需求进行定制,增加更多的辅助方法。对于辅助类中没有提供的方法也可以使用 L.getLogger() 方法获取Logger实例来使用。

4. 结果验证

日志的Level分级:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。

因为我的log4j2中的level设置的是 INFO 级别。所以打印信息中只能看到 INFO 、 WARN 、 ERROR 三种级别(FATAL级别的信息没有打印,否则也可以看到)。

打印信息如下图所示:

同时在电脑系统中生成了Log文件,如下图所示:

Spring Boot Log4j2的配置使用详解_第1张图片

观察路径可以发现,这个路径正是在 Log4j2.xml 中设置的路径:



  /home/kylin/log/knight/spring_log
  /home/kylin/log/knight/spring_log/7z

5. 更多

Log4j2的Github地址:https://github.com/apache/logging-log4j2

本教程的示例代码地址:https://github.com/dkylin/SpringBoot-Sample/tree/master/SpringBoot-log4j2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(Spring Boot Log4j2的配置使用详解)