log4j2配置详解(节点和输出格式)

Spring Boot 整合 log4j2 日志配置教程 在项目推进中,如果说第一件事是搭建 Spring 框架的话,那么第二件事情就是在 Sring 基础上搭建日志框架,此篇文章是博主在学习过程中使用 Spring Boot 搭建项目时整合 Log4j2 日志的总结共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF机制:如果一条日志信息的级别大于等于配置文件的级别,就记录All:最低等级的,用于打开所有日志记录。 阅读详情
AI摘要

本文详细介绍了Log4j2的配置方法,包括配置文件的各个节点解析、输出格式详解及示例模版。深入探讨了Configuration、Appenders、Loggers等节点的功能,并解释了不同类型的Appender如Console、RollingFile的应用场景。

本文章主要详细介绍(java版)log4j2的配置!!

目录

一.配置文件节点解析    

二.输出格式详解:

三.模版


一.配置文件节点解析    

  1.根节点Configuration

            根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).

  • status用来指定log4j本身的打印日志的级别.
  • monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.

  2.Appenders

    Appenders节点,常见的有三种子节点:Console、RollingFile、File.

  • Console节点用来定义输出到控制台的Appender.

    name:指定Appender的名字.
    target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.
    PatternLayout:输出格式,不设置默认为:%m%n.

  • File节点用来定义输出到指定位置的文件的Appender.

     name:指定Appender的名字.
     fileName:指定输出日志的目的文件带全路径的文件名.
     PatternLayout:输出格式,不设置默认为:%m%n.

  • RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

     name:指定Appender的名字.
     fileName:指定输出日志的目的文件带全路径的文件名.
     PatternLayout:输出格式,不设置默认为:%m%n.
     filePattern:指定新建日志文件的名称格式.
     Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
        TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.
     SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.
     DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性),默认是7个文件。

    3. Loggers节点

     常见的有两种:Root和Logger.

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

    level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
    AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.

  • Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

    level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
    name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
    AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。

     4. 关于日志level
      共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
      All:最低等级的,用于打开所有日志记录.
      Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
      Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
      Info:消息在粗粒度级别上突出强调应用程序的运行过程.
      Warn:输出警告及warn以下级别的日志.
      Error:输出错误信息日志.
      Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
      OFF:最高等级的,用于关闭所有日志记录.

 

二.输出格式详解:

 

%c列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间log4j配置文件参数举例输出显示媒介
假设当前logger名字空间是"a.b.c"
%ca.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"
%Corg.apache.xyz.SomeClass
%C{1}SomeClass
%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的源文件名%FMyClass.java
%l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数%lMyClass.main(MyClass.java:129)
%L显示调用logger的代码行%L129
%m显示输出消息%mThis is a message for debug.
%M显示调用logger的方法名%Mmain
%n当前平台下的换行符%nWindows平台下表示rn
UNIX平台下表示n
%p显示该条日志的优先级%pINFO
%r显示从程序启动时到记录该条日志时已经经过的毫秒数%r1215
%t输出产生该日志事件的线程名%tMyClass
%x按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志假设某程序调用顺序是MyApp调用com.foo.Bar
%c %x - %m%nMyApp - Call com.foo.Bar.
com.foo.Bar - Log in Bar
MyApp - Return to MyApp.
%X按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。%X{5}(记录代号为5的客户端的日志)
%%显示一个百分号%%%

 

三.模版

一个比较全的模版:

<?xml version="1.0" encoding="UTF-8"?>
 <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置-->
 <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
 <configuration status="WARN" monitorInterval="30">
    <!--先定义所有的appender-->
     <appenders>
		<!--输出到控制台-->
         <console name="Console" target="SYSTEM_OUT">
         <!--输出日志的格式-->
             <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
         </console>
		<!--打印到文件中,这个log每次运行程序会自动清空,由append属性决定-->
		<File name="log" fileName="log/test.log" append="false">
			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
		 </File>
		<!--文件滚动, 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
         <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
                      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
             <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->        
             <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
             <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
             <Policies>
				 <DefaultRolloverStrategy max="20"/>   <!--文件夹下最多的文件个数-->
                 <TimeBasedTriggeringPolicy interval="2 hour"/>			<!--多长时间滚动一次-->
                 <SizeBasedTriggeringPolicy size="100 MB"/>		<!-- 一个日志文件的最大大小 -->
             </Policies>
         </RollingFile>
        
         
     </appenders>
     <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
     <loggers>
         <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO"></logger>
         <logger name="org.mybatis" level="INFO"></logger>
         <root level="all">		 
            <appender-ref ref="Console"/>
             <appender-ref ref="RollingFileInfo"/>
             <appender-ref ref="RollingFileWarn"/>
             <appender-ref ref="RollingFileError"/>
         </root>
     </loggers>
 </configuration>
 
 

 

 

参考文章:  

http://www.cnblogs.com/hafiz/p/6170702.html

http://blog.youkuaiyun.com/u012729481/article/details/21094003

Java日志框架Log4j 2详解 这是一篇Log4j 2的详解,感兴趣的可以观看 阅读详情

相关推荐

Log4j2日志记录框架的使用教程与简单实例

1、Log4j2的使用教程 1.1简介 Log4j的1.x版本虽然已经被广泛使用于很多应用程序中,但由于出现内存泄漏等bug,代码难以维护,以及需要使用老版本的jdk等劣势,在2015年8月已经玩完。它的替代品,SLF4J,Logback,Log4j2对日志框架做了很多必要的改进。 历史上出现了很多的日记框架,如: Log4j:Apache Log4j是一个基于Java的日志记录工具。它...

pan_junbiao的博客 1万+

Log4j2详解

1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式。 2.Log4j2中的同步日志 所谓同步日志,即当输出日志时,必须等待日志输出语句执行完毕后,才能执行后面的业务逻辑语句。 下面通过一个例子来了解Log4j2中的同步日志,并借此来探究整个日志输出过程。 log4j2.xml配置如下: <?xml version="1.0" encoding="UTF-8"?> <C

I want to know a little more. 8591

Java日志框架:Log4j2的使用详解

本文介绍了如何在Java应用程序中使用Log4j2作为日志框架,并提供了详细的配置和示例代码。通过Log4j2,我们可以轻松地记录和管理应用程序的日志信息,以便实时监控应用程序的运行状态和调试代码。在本文中,我们将介绍如何使用Log4j2作为Java日志框架,来管理和生成日志信息。接下来,我们需要创建一个Log4j2的配置文件,用于指定日志的输出格式、输出位置等配置信息。一旦我们完成了Log4j2的配置,就可以在Java代码中使用它来记录日志了。记录了三条日志,分别是信息日志、警告日志和错误日志。

ScriptCharm的博客 448

SpringBoot整合Log4j2以及配置详解

文章目录标题SpringBoot整合Log4j2以及配置详解1.加入依赖2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下:3.配置参数详解1.日志级别2.输出源3. 格式4.PatternLayout自定义日志布局:4.log4j2配置详解Appenders节点Console节点用来定义输出到控制台的Appender.File节点用来定义输出到指定位置的文件的Appender.Loggers节点,常见的有两种:Root和Logger.5

OlderSheep编程达人 1万+

内存优化--LOGBACK导致内存告警

一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6

qq_33199919的博客 6052

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

springBoot日志使用Log4j2配置

代码运行是否正常,bug定位等都得依赖于日志。除了在开发工具中打印出来之外给程序员查看之外,线上环境运行出现异常时,我们也同样需要知道查找日志。这时候就需要将日志记录到本地文件中,甚至需要将日志采集统一上传到集中云存储分析处理,进一步实时监控、异常报警等。 springBoot可以集成很多日志框架,默认采用Logback,但经过调研对比,目前大多推荐Log4j2框架,性能更优。 引入Log4j2依赖包 测试: private final Logger logger = LoggerFa..

异世者的博客 1300

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1471

小白使用log4j2配置文件log4j2.xml详细说明

log4j2配置文件log4j2.xml 背景 搭项目环境放好用到,查了很多资料,就总结了一个笔记. 关于配置文件的名称以及在在项目中的存放位置 log4j2.版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(先后顺序)如下: (1).classpath下的名为log4j2-test.json或者log4j2-test.jsn的文件 (2).classpath下的名为log4j2-test

weixin_43395106的博客 825

基于Ultralytic实现多路摄像头目标检测

基于Ultralytic实现多路摄像头目标检测前面的文章分享了单路摄像头画面的YOLO目标检测,这篇文章主要分享一下多路摄像头画面的实时YOLO目标检测。测试环境在Windows系统下进行。

qq_57674776的博客 941

当我们谈论Unidbg时我们在谈什么

文章目录一、前言二、使用Unidbg的工作量是什么三、补环境补的是什么3.1 运行环境缺失3.2 上下文缺失四、Unidbg 不是所有情况下最优的解决方案五、Unidbg在大多数情况下是好的方案六、Unidbg和风控无关七、尾声 一、前言 这是一篇漫谈Unidbg的文章,我对Unidbg的使用和理解都还很浅,日后会更新或修改看法,欢迎大佬指点,也期待同侪讨论。 二、使用Unidbg的工作量是什么 我们常规使用Frida + IDA的动静态分析中,工作可能是这样的 找线索→Frida Hook验证→验证成功继

lilac的博客 5788

log4j2配置文件log4j2.xml详解

一、背景 昨天了解了一下slf4j和log4j2,想要进行总结记录,配置步骤十分简单,唯一需要具体了解的就是log4j2.xml的配置,于是找到了这篇博文,配置讲解十分详细,便转载作记录,再次感谢阿豪聊干货。以下原文: 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的...

weixin_43303773的博客 251

msf后渗透之获取登入password、远程控制、调用摄像头

在terminal输入load kili creds_all直接获取密码(不一定成功) 使用kiwi_cmd sekurlsa::logonpasswords获取密码

m0_61506558的博客 2964

log4j2配置详解

log4j2配置详解一、关于配置文件的名称以及在项目中的存放位置二、缺省默认配置文件三 、配置详细介绍1.Configuration根节点2.Appenders节点(1)Console子节点(2)File子节点(3)RollingFile子节点(4)Async子节点(5)其他非常用输出源(6)PatternLayout3.Loggers节点(1)Root子节点(2)Logger子节点4.Properties子节点5.配置过滤器< Filters >6.AsyncLogger7.关于日志level

weixin_52189442的博客 1300

【WRF安装】WRF编译错误:problems building executables look for error in the build log

WRF编译错误:problems building executables look for error in the build log

WW、forever的博客 752

cursor AI代码编辑器IDE对接deepseek模型api;字节ai编辑器trae

参考: https://www.cursor.com/ https://platform.deepseek.com/https://www.cursor.com/下载安装后,注册账号登录即可 再高级里选择设置 再模型这注册模型: 模型名称一定要填正确,url地址填好,最后填上秘钥验证

weixin_42357472的博客 1万+

Log4j2配置文件log4j2.xml(一)

转自:https://blog.youkuaiyun.com/ly199108171231/article/details/80534286 一、配置全解 1.关于配置文件的名称以及在项目中的存放位置     log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".     系统选择配置文件的...

雪落南城的博客 1348

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

log4j2<PatternLayout>子节点浅析

首先声明本文并不教您怎么用log4j2,仅仅只对子节点进行说明。 要看懂本文需要对log4j2有一定的了解,至少能够知道、和的区别。 本文主要参考对象为log4j2官方手册:《Apache Log4j 2 v. 2.1 User's Guide》,但是鉴于官方手册的不少细节描述得并不是非常清楚,甚至还有错误,所以还希望大家自己多试验,毕竟如果官方文档有错误或写得不清楚,我也没办法。 ----

zhu19774279的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

log4j2配置文件log4j2.xml配置详解

一、背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置,以及log4j2配置文件的详解。本文就专门来讲解下log4j2.xml配置文件的各项标签的意义。 二、配置全解 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文...

Fang的博客 2662

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

log4j2配置文件log4j2.xml

1、配置全解 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件. (2).classpath下的名为log4j2-test.xml的文件. (3).classpath下名为log4j2.json 或者

qq_38205881的博客 251
上一篇: sqoop2的shell下的使用及其详解(sqoop-1.99.7)
下一篇: sublime3 安装Package Control以及解决错误
米二
博客等级 码龄11年 89粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值