说明:本文为作者原创,欢迎大家转载,不过记得声明出处哦~
日志管理在软件开发中必不可少,而Java开发中,log4j2以其简单易用的特点使其普及度非常高。但非常可惜的是log4j2的官方文档本人搜索大半天也没有找到(可能是本人英文水平实在太有限,各位可以尝试找一找,这里贴上官网地址:Apache Log4j2,找到了还请告诉我一声),另外虽然能在网上各大论坛找到一些开发者的笔记,但大都比较零散。本人参考了不下20篇开发者笔记和一些线上资料,整合出了一份比较全的log4j2配置,希望各位可以借此节省开发时间。
这里以springboot基础框架来整合log4j2。
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
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的客户端的日志)
********************************************************************************************************************
%% 显示一个百分号 %% %
********************************************************************************************************************
首先引入基础包:
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