关于springboot整合log4j2的史上最全配置解释

说明:本文为作者原创,欢迎大家转载,不过记得声明出处哦~

前言

日志管理在软件开发中必不可少,而Java开发中,log4j2以其简单易用的特点使其普及度非常高。但非常可惜的是log4j2的官方文档本人搜索大半天也没有找到(可能是本人英文水平实在太有限,各位可以尝试找一找,这里贴上官网地址:Apache Log4j2,找到了还请告诉我一声),另外虽然能在网上各大论坛找到一些开发者的笔记,但大都比较零散。本人参考了不下20篇开发者笔记和一些线上资料,整合出了一份比较全的log4j2配置,希望各位可以借此节省开发时间。

 

描述

这里以springboot基础框架来整合log4j2。

 

正文

pom.xml文件对log4j2的依赖配置

    
        

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

log4j2.xml文件配置

log4j2在springboot中的配置只需要在项目的“src\main\resources\”目录下生成一个以log4j2开头的xml文件,springboot就能自动依据该文件的内容配置log4j2了。







    
    
        
        
        spring-boot-demo-log4j2
        D:\log4j2
    
    
    
    
        
        
        
        
            
            
            
            
            
                
            
        
        
        
        
		
		
        
			
			
			
            
 
            
            
            
            
            
            
            
            
            
            
            
                
                
                
                
                
                
                
                
                
                
            
 
            
            
                
                
                
                
                
                
            
            
            
            
                
                    
                    
                    
                
            
        

        
        
            
 
            
                
                
            
 
            
                
                
            
        
        
        
        
            
 
            
                
            
 
            
                
                
            
        
        
        
        
            
 
            
                
            
 
            
                
                
            
        
    
    
    
    
    
    
    
    
    
        
        
        
            
            
        

        
        
 
        
            
            
        
 
        
            
            
        
 
        
        
        
            
            
        
 
        
        
    

这里再放送一份本人整理的百分号属性参数说明大全:

    ********************************************************************************************************************
    参数        说明                                         举例                    输出显示媒介
    ********************************************************************************************************************
    %c          列出logger名字空间的全称,如果加上{<层数>},   假设当前logger的命名空间是"a.b.c"
                则表示列出从最内层算起的指定层数的名字空间
                                                            %c                  a.b.c
                                                            %c{2}               b.c
                                                            %20c                (若名字空间长度小于20,则左边用空格填充)
                                                            %-20c               (若名字空间长度小于20,则右边用空格填充)
                                                            %.30c               (若名字空间长度超过30,截去多余字符)
                                                            %20.30c             (若名字空间长度小于20,则左边用空格填充;
                                                                                    若名字空间长度超过30,截去多余字符)
                                                            %-20.30c            (若名字空间长度小于20,则右边用空格填充;
                                                                                    若名字空间长度超过30,截去多余字符)
    ********************************************************************************************************************
    %C          列出调用logger的类的全名(包含包路径)         假设当前类是"org.apache.xyz.SomeClass"
                                                            %C                  org.apache.xyz.SomeClass
                                                            %C{1}               SomeClass
    %class
    ********************************************************************************************************************
    %d          显示日志记录时间,{<日期格式>}使用ISO8601定义的日期格式
                                                            %d{yyyy/MM/dd HH:mm:ss,SSS}     2005/10/12 22:23:30,117
                                                            %d{ABSOLUTE}        22:23:30,117
                                                            %d{DATE}            12 Oct 2005 22:23:30,117
                                                            %d{ISO8601}         2005-10-12 22:23:30,117
    ********************************************************************************************************************
    %F          显示调用logger的源文件名                     %F                   MyClass.java
    ********************************************************************************************************************
    %l          显示日志事件的发生位置,包含包路径、方法名、
                源文件名,以及在代码中的行数                  %l                   com.a.b.MyClass.main(MyClass.java:168)
    ********************************************************************************************************************
    %L          显示调用logger的代码行                       %L                   129
    %line                                                  %line                129
    ********************************************************************************************************************
    %level      显示该条日志的优先级                         %level               INFO
    %p                                                     %p                   INFO
    ********************************************************************************************************************
    %m          显示输出消息                                 %m                  This is a message for debug.
    %message                                                %message            This is a message for debug.
    ********************************************************************************************************************
    %M          显示调用logger的方法名                       %M                   main
    ********************************************************************************************************************
    %n          当前平台下的换行符                           %n                   Windows平台下表示rn,UNIX平台下表示n
    ********************************************************************************************************************
    %p          显示该条日志的优先级                         %p                   INFO
    %level                                                 %level               INFO
    ********************************************************************************************************************
    %r          显示从程序启动时到记录该条日志时已经经过的毫秒数  %r                 1215
    ********************************************************************************************************************
    %t          输出产生该日志事件的线程名                    %t                   http-nio-8080-exec-10
    %thread                                                 %thread              http-nio-8080-exec-10
    ********************************************************************************************************************
    %x          按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志           假设某程序调用顺序是MyApp调用com.foo.Bar
                                                            %c %x - %m%n        MyApp - Call com.foo.Bar.
                                                                                com.foo.Bar - Log in Bar
                                                                                MyApp - Return to MyApp.
    ********************************************************************************************************************
    %X          按MDC(Mapped Diagnostic Context,线程映射表)
                输出日志。通常用于多个客户端连接同一台服务器,
                方便服务器区分是那个客户端访问留下来的日志。     %X{5}             (记录代号为5的客户端的日志)
    ********************************************************************************************************************
    %%          显示一个百分号                               %%                  %
    ********************************************************************************************************************

Log4j2的具体使用

首先引入基础包:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

定义logger:

protected final Logger logger = LoggerFactory.getLogger(this.getClass());

输出logger:

logger.trace(message);
logger.debug(message);
logger.info(message);
logger.warn(message);
logger.error(message);

 

参考资源

springBoot完美配置log4j2
详解log4j2
Log4j2 简明教程
聊一聊log4j2配置文件log4j2.xml
log4j2 RollingRandomAccessFile配置
SpringBoot集成Log4j2日志框架
Log4j2源码解读——删除过期文件
log4j2详解
Log4j2介绍和特性实例
关于异步log4j2中location信息打印问题
log4j2 入门学习与总结

(包括但不限于上述资源,还有很多资源在编写的过程中遗忘了,本人在此深表歉意。)

 

-------------------------------------
作者:TGY——一个IT男的画意诗情
来源:CSDN 

你可能感兴趣的:(Java)