栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring boot 集成 log4j2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring boot 集成 log4j2

Log4j2 简介

Apache Log4j 2是 Log4j(1) 的升级版,比它的祖先 Log4j 1. x 有了很大的改进,和logback对比有很大的改进。除了内部设计的调整外,主要有以下几点的大升级:

  1. 更简化的配置
  2. 更强大的参数格式化
  3. 最夸张的异步性能

Log4j 2中,分为 API(log4j-api)和实现(log4j-core) 两个模块。API 和slf4j 是一个类型,属于日志抽象/门面,而实现部分,才是Log4j 2的核心。

  1. org.apache.logging.log4j » log4j-api
  2. org.apache.logging.log4j » log4j-core
超强的性能 最强的异步性能

最强的异步性能算是Log4j2最强之处了。log4j2 在目前JAVA中的日志框架里,异步日志的性能是最高的,没有之一。
先来看一下,几种日志框架benchmark对比结果(log4j2官方测试结果):

从图上可以看出,log4j2的异步(全异步,非混合模式)下的性能,远超log4j1和logback,简直吊打。压力越大的情况下,吞吐上的差距就越大。在64线程测试下,log4j2的吞吐达到了180w+/s,而logback/log4j1只有不到20w,相差近十倍

零GC(Garbage-free)

从2.6版本开始(2016年),log4j2 默认就以零GC模式运行了。什么叫零GC呢?就是不会由于log4j2而导致GC。
log4j2 中各种Message对象,字符串数组,字节数组等全部复用,不重复创建,大大减少了无用对象的创建,从而做到“零GC”。

更高性能 I/O 写入的支持

log4j 还提供了一个MemoryMappedFileAppender,I/O 部分使用MemoryMappedFile来实现,可以得到极高的I/O性能。不过在使用MemoryMappedFileAppender之前,得确定你足够了解MemoryMappedFile的相关知识,否则不要轻易使用。

更强大的参数格式化

API模块和slf4j相比,提供了更丰富的参数格式化功能。
使用{}占位符格式化参数
在slf4j里,我们可以用{}的方式来实现“format”的功能(参数会直接toString替换占位符),像下面这样:

logger.debug("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar());
基本用法 引入依赖

在引入依赖之前需要排除其他日志框架依赖,避免各种奇奇怪怪的报错。

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

        

        
            org.apache.logging.log4j
            log4j-core
            2.14.1
        
配置文件

默认的配置文件路径为:classpath:log4j2.xml;如果找不到输出的日志文件,可以将路径改为绝对路径。



    
      
    
    
        
          
            
          
        
          
              
              
                 
                  
                  
                  
              
          
    
    
       
       
       
       
        
           
           
            
           
        
    

如果不能成功引入可以在application文件中手动引入配置文件。

# 应用名称
spring.application.name=springboot-log4j2
logging.config= classpath:log4j2-spring.xml
使用logger
@RestController
public class LogController {

    Logger logger = LogManager.getLogger(LogController.class);

    @RequestMapping("/log")
    public String test() {
        logger.info("info");
        logger.debug("debug");
        logger.error("error");
        return "success";
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号