log4j2(log4j2 配置简要分析)

2026-05-24 03:45:01 :0

log4j2(log4j2 配置简要分析)

各位老铁们,大家好,今天由我来为大家分享log4j2,以及log4j2 配置简要分析的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

log4j2 配置简要分析

对于做后端的同学来说,log是分析bug、查找问题不可或缺的工具,好的日志配置将使我们的开发工作如虎添翼。 把视线聚焦到java,常用的日志工具有log4j,log4j2以及logback等,其中log4j2功能较为强大,运行效率也较高,我们就来用一个例子看一看log4j2的配置思路,下面就是这个配置文件:

我们看到,Configuration有2个属性status和monitorInterval,它们分别是log4j2自身组件的日志级别以及重新刷新配置文件的时间,通过配置status可以看到log4j2相关的日志,配置monitorInterval可以通过修改配置文件来改变日志配置。

从上面的log4j2.xml配置文件中,我们可以看到log4j2的配置文件中主要分为2块,一块为appender,描述了如何记录日志,另外一部分是log config,记录了哪种日志对应哪种级别。 而不同的LogConfig之间其实是有继承关系的,子LogConfig会继承parent的属性,而所有LogConfig都继承自Root LogConfig。所以即使只配置了root logger,你一样可以在任何地方通过LoggerFactory.getLogger获取一个logger对象,记录日志。

那么日志之间的继承关系是由什么决定的呢?看看上面的配置文件中root以外的2个logConfig,只有3个配置:日志级别,name以及appender,从直觉上看应当是name最可能决定了LogConfig的继承关系,其实也正是如此:com.foo是com.foo.Bar的父级;java是java.util的父级,是java.util.vector的祖先(注意name区分大小写)。

理解了这一点,我们就能理清log4j2配置的思路:先配置一个root,让所有需要使用日志的logger继承,然后对有特别需要的logger进行特殊的配置,比如我们希望 org.springframework 包只记录error以及warn级别的log,再比如,我们希望能显示mybatis执行的sql的日志,都可以进行个性化的配置。

appender是LogConfig的重要组成部分,一个LogConfig可以使用多个appender,一个appender也可以被多个LogConfig使用,appender多种多样,不同的appender也有不同的属性和配置,难以一一阐述,需要使用时可以直接查看文档来进行个性化配置。不过就filters可以单独拿出来讨论一下。filter有两个重要属性 onMatch 和 onMismatch 。可以有DENY、ACCEPT或NEUTRAL配置,DENY说明不由当前appender处理,ACCEPT说明由当前filter处理,而NEUTRAL说明如果按顺序还有其他filter则由其他filter处理,如果当前filter已经是最后一个filter,则由当前appender处理。

log4j2的官方文档建议记录程序行为日志异步日志,效率更高。因为异步日志使用的是无锁技术,所以需要引入 Disruptor 。然后可以通过配置异步的appender或Logger来实现异步日志:

或

动态修改日志级别是一个很实用的功能,关于如果动态修改日志级别,请参考美团的一篇文章: 日志级别动态调整——小工具解决大问题

以上就是对log4j2的配置的一些总结,更多信息请关注官方文档。

log4j的使用步骤

  一、使用步骤:
  第一步
  加入log4j-1.2.8.jar(可以选择log4j的更高版本)到lib下。
  第二步
  在CLASSPATH下建立log4j.properties。内容如下(数字为行号):
  1 log4j.rootCategory=INFO, stdout , R
  2
  3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5 log4j.appender.stdout.layout.ConversionPattern= %C.%M(%L) | %m%n
  6
  7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
  8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
  9 log4j.appender.R.layout=org.apache.log4j.PatternLayout
  10 log4j.appender.R.layout.ConversionPattern=%d- %p %t %c - %m%n
  11
  12 log4j.logger.com.neusoft=DEBUG
  13 log4j.logger.com.opensymphony.oscache=ERROR
  14 log4j.logger.net.sf.navigator=ERROR
  15 log4j.logger.org.apache.commons=ERROR
  16 log4j.logger.org.apache.struts=WARN
  17 log4j.logger.org.displaytag=ERROR
  18 log4j.logger.org.springframework=DEBUG
  19 log4j.logger.com.ibatis.db=WARN
  20 log4j.logger.org.apache.velocity=FATAL
  21
  22 log4j.logger.com.canoo.webtest=WARN
  23
  24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
  25 log4j.logger.org.hibernate=DEBUG
  26 log4j.logger.org.logicalcobwebs=WARN
  第三步
  相应的修改其中属性,修改之前就必须知道这些都是干什么的,在第二部分讲解。
  第四步
  在要输出日志的类中加入相关语句:
  定义属性:static Logger logger = Logger.getLogger(LogDemo.class); //LogDemo为相关的类
  在相应的方法中:
  if (logger.isDebugEnabled()){
  logger.debug(“System …..”);
  二、log4j的简单介绍:
  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  三、参考资料:
***隐藏网址***

如何使用Log4j

1、 Log4j是什么?
***隐藏网址***
2、Log4j的概念
Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远 存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的 级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。
3、Log4j的配置文件
虽然可以不用配置文件,而在程序中实现配置,但这种方法在如今的系统开发中显然是不可取的,能采用配置文件的地方一定一定要用配置文件。Log4j支持两 种格式的配置文件:XML格式和Java的property格式,本人更喜欢后者,首先看一个简单的例子吧,如下:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller’s file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize= 100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
首先,是设置root,格式为 log4j.rootLogger=,appenderName, ...,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 配置日志信息输出目的地Appender,其语法为
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息
   %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  %r 输出自应用启动到输出该log信息耗费的毫秒数
  %c 输出所属的类目,通常就是所在类的全名
  %t 输出产生该日志事件的线程名
  %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似: 2002年10月18日 22:10:28,921
  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
4、Log4j在程序中的使用
要在自己的程序中使用Log4j,首先需要将commons-logging.jar和logging-log4j-1.2.9.jar导入到构建路径中。然后再将log4j.properties放到src根目录下。这样就可以在程序中使用log4j了。在类中使用log4j, 首先声明一个静态变量 Logger logger=Logger.getLog("classname");现在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一个小例子:
import com.foo.Bar;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class.getName());
public static void main(String args) {
// BasicConfigurator replaced with PropertyConfigurator.
PropertyConfigurator.configure(args);
logger.info("Entering application.");
Bar bar = new Bar();
bar.doIt();
logger.info("Exiting application.");
}
}

【日志】Log4j2配置

在同步日志模式下, Logback的性能是最糟糕的,log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的。本章主要介绍Spring Boot如何集成并配置使用Log4j2

引入Log4j2依赖包,其它依赖和Logback一样,使用SLF4J统一输出

然后需要在resource下面添加log4j2.xml配置文件,当然了如果你不添加,springboo会提示你没有对应文件,并使用默认的配置文件,这个时候级别可以在application.properties中配置

和logback配置类似,主要是含有loggers、appenders,其中loggers由logger,root组成。appenders由console(控制台),File、RollingFile(输出文件)组成,作用和配置和logback差不多

(1)Console
用来定义输出到控制台的Appender,主要设置输出格式和level级别

ThresholdFilter: 定义打印级别,onMismatch值设置是否拒绝其它
(2)File
用来定义输出到指定位置的文件的Appender

(3)RollingFile
用来定义超过指定条件自动删除旧的,创建新的Appender

参数说明:

Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

参数说明:

变量配置,类似常量定义

默认情况下springboot是不将日志输出到日志文件中,这里对日志框架的支持有两种配置方式(和logback一样):
(1)application.properties 或 application.yml (系统层面)
(2)logback-spring.xml (自定义文件方式)

默认名log4j2-spring.xml,可以省下在application.yml中配置,如果自定义了文件名,需要在application.yml中配置

此种方式可以处理比较复杂的情况,比如区分 info 和 error 日志、每天产生一个日志文件。

通过在DefaultRolloverStrategy 标签下添加Delete标签实现,保留7天的日志

IfLastModified .age要和filePattern精确的时间一致, 否则貌似无效.

文章分享结束,log4j2和log4j2 配置简要分析的答案你都知道了吗?欢迎再次光临本站哦!

log4j2(log4j2 配置简要分析)

本文编辑:admin
: log4j2

本文相关文章:


log4j2(log4j2删除文件夹)

log4j2(log4j2删除文件夹)

“log4j2”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看log4j2(log4j2删除文件夹)!本文目录log4j2删除文件夹log4j2低版本jndi漏洞修复及测试log4j2删除文件夹先说结论:通过log4j调用脚

2026年1月3日 16:30

更多文章:


arange中文意思(a range of是什么意思啊)

arange中文意思(a range of是什么意思啊)

这篇文章给大家聊聊关于arange中文意思,以及a range of是什么意思啊对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录a range of是什么意思啊在python中,x = np.arange是什么意思找一些常用的

2026年4月21日 05:30

python什么年龄学比较好(编程从几岁开始学合适)

python什么年龄学比较好(编程从几岁开始学合适)

本篇文章给大家谈谈python什么年龄学比较好,以及编程从几岁开始学合适对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录编程从几岁开始学合适孩子学编程最佳年龄是多大 选择什么语言好python适合多大孩子学几岁开始学编程比较好

2026年1月29日 00:00

pipeline是什么软件(jenkins之pipeline相关概念)

pipeline是什么软件(jenkins之pipeline相关概念)

今天给各位分享jenkins之pipeline相关概念的知识,其中也会对jenkins之pipeline相关概念进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录jenkins之pipeline相关概念国内有哪些

2026年1月4日 22:15

绝地求生比赛(绝地求生PCS4洲际赛赛程赛制及规则一览)

绝地求生比赛(绝地求生PCS4洲际赛赛程赛制及规则一览)

大家好,今天小编来为大家解答以下的问题,关于绝地求生比赛,绝地求生PCS4洲际赛赛程赛制及规则一览这个很多人还不知道,现在让我们一起来看看吧!本文目录绝地求生PCS4洲际赛赛程赛制及规则一览绝地求生职业比赛中的实用技巧分享绝地求生10.2版

2025年7月19日 05:00

horizontally英文(纵横英文拼写)

horizontally英文(纵横英文拼写)

大家好,如果您还对horizontally英文不太了解,没有关系,今天就由本站为大家分享horizontally英文的知识,包括纵横英文拼写的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录纵横英文拼写纵横 英文怎么

2026年8月5日 10:45

c语言是面向过程还是对象(C语言是面向对象还是面向过程的)

c语言是面向过程还是对象(C语言是面向对象还是面向过程的)

大家好,今天小编来为大家解答以下的问题,关于c语言是面向过程还是对象,C语言是面向对象还是面向过程的这个很多人还不知道,现在让我们一起来看看吧!本文目录C语言是面向对象还是面向过程的为什么说“C语言是一种面向过程()的程序设计语言”请问C是

2026年6月29日 07:45

web前端培训一对一(北京前端培训机构哪个好)

web前端培训一对一(北京前端培训机构哪个好)

这篇文章给大家聊聊关于web前端培训一对一,以及北京前端培训机构哪个好对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录北京前端培训机构哪个好web前端开发培训费用是多少Web前端培训费用一般是多少web前端是自学好还是去培训机

2026年1月29日 16:15

电脑网页和手机网页的区别(手机网站跟电脑网站的区别是什么)

电脑网页和手机网页的区别(手机网站跟电脑网站的区别是什么)

“电脑网页和手机网页的区别”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看电脑网页和手机网页的区别(手机网站跟电脑网站的区别是什么)!本文目录手机网站跟电脑网站的区别是什么pc端网站和手机端网站有什么区别手机网站和电脑网站的

2026年7月27日 14:45

西安大唐不夜城在哪个区(大唐不夜城属于哪个区)

西安大唐不夜城在哪个区(大唐不夜城属于哪个区)

今天给各位分享大唐不夜城属于哪个区的知识,其中也会对大唐不夜城属于哪个区进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录大唐不夜城属于哪个区山西隋唐不夜城地址大唐不夜城和大唐芙蓉园是一个地方吗大唐芙蓉园和大唐不

2026年9月25日 03:15

银行行别代码查询(银行行号是怎么查)

银行行别代码查询(银行行号是怎么查)

本篇文章给大家谈谈银行行别代码查询,以及银行行号是怎么查对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录银行行号是怎么查开户行代码在哪里查如

2025年10月31日 01:45

generate用法以及短语(VHDL 语言中GENERATE 用途是什么)

generate用法以及短语(VHDL 语言中GENERATE 用途是什么)

这篇文章给大家聊聊关于generate用法以及短语,以及VHDL 语言中GENERATE 用途是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录VHDL 语言中GENERATE 用途是什么bring about/gener

2026年9月13日 13:30

css文本框提示文字(如何在html文本框中添加提示信息)

css文本框提示文字(如何在html文本框中添加提示信息)

“css文本框提示文字”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看css文本框提示文字(如何在html文本框中添加提示信息)!本文目录如何在html文本框中添加提示信息javascript代码实现如何在html文本框中添

2026年8月5日 09:45

velocity怎么引用(velocity是怎么用的)

velocity怎么引用(velocity是怎么用的)

其实velocity怎么引用的问题并不复杂,但是又很多的朋友都不太了解velocity是怎么用的,因此呢,今天小编就来为大家分享velocity怎么引用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录veloci

2025年7月29日 16:45

xml文件是干嘛的(XML是用来做什么的)

xml文件是干嘛的(XML是用来做什么的)

大家好,如果您还对xml文件是干嘛的不太了解,没有关系,今天就由本站为大家分享xml文件是干嘛的的知识,包括XML是用来做什么的的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录XML是用来做什么的什么是XML文档x

2025年7月29日 06:30

mvp是什么意思?mvp啥意思

mvp是什么意思?mvp啥意思

大家好,mvb是啥相信很多的网友都不是很明白,包括mvp是什么意思也是一样,不过没有关系,接下来就来为大家分享关于mvb是啥和mvp是什么意思的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录mvp是什么意思mvp

2025年10月30日 02:30

德甲西甲竞彩比分(德甲首轮比分 汉堡VS拜仁)

德甲西甲竞彩比分(德甲首轮比分 汉堡VS拜仁)

“德甲西甲竞彩比分”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看德甲西甲竞彩比分(德甲首轮比分 汉堡VS拜仁)!本文目录德甲首轮比分 汉堡VS拜仁德甲2022-2023比分及积分榜09-10赛季英超、德甲、意甲、西甲前几轮

2025年9月17日 10:15

电脑版access安装包(电脑怎么安装access)

电脑版access安装包(电脑怎么安装access)

大家好,今天小编来为大家解答以下的问题,关于电脑版access安装包,电脑怎么安装access这个很多人还不知道,现在让我们一起来看看吧!本文目录电脑怎么安装accessPCAccessV10SP6安装不了怎么会事情华为笔记本电脑mateb

2025年7月16日 02:00

mysql驱动包官网下载(问一下Java高手们,org.gjt.mm.mysql.Driver这个驱动那里有下的,先谢谢了)

mysql驱动包官网下载(问一下Java高手们,org.gjt.mm.mysql.Driver这个驱动那里有下的,先谢谢了)

大家好,mysql驱动包官网下载相信很多的网友都不是很明白,包括问一下Java高手们,org.gjt.mm.mysql.Driver这个驱动那里有下的,先谢谢了也是一样,不过没有关系,接下来就来为大家分享关于mysql驱动包官网下载和问一下

2025年8月9日 05:45

rpc和restful(“RPC好,还是RESTful好)

rpc和restful(“RPC好,还是RESTful好)

大家好,今天小编来为大家解答以下的问题,关于rpc和restful,“RPC好,还是RESTful好这个很多人还不知道,现在让我们一起来看看吧!本文目录“RPC好,还是RESTful好spring cloud 服务调用方式为什么使用http

2026年3月1日 15:00

nowhere的用法讲解(nowhere倒装用法)

nowhere的用法讲解(nowhere倒装用法)

这篇文章给大家聊聊关于nowhere的用法讲解,以及nowhere倒装用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录nowhere倒装用法somewhere ,anywhere,everywhere nowhere这几个

2026年3月19日 20:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索