log4j2日志配置
背景
log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量、可配置的审计型日志、基于插件架构的各种灵活配置等。
官方配置文档:http://logging.apache.org/log4j/2.x/manual/configuration.html
1、所需jar
1)maven配置
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> </dependencies>
网页的话还要加入如下的maven配置:
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><scope>runtime</scope></dependency>
2)使用jar
log4j-api-2.7.jar log4j-core-2.7.jar
2、配置日志打印文件
java项目寻找log4j2配置文件会依次读取classpath是否有下面这些文件:
- log4j.configurationFile
- log4j2-test.properties
- log4j2-test.yaml或者 log4j2-test.yml
- log4j2-test.json 或者 log4j2-test.jsn
- log4j2-test.xml
- log4j2.properties
- log4j2.json 或者 log4j2.jsn
- log4j2.xml
- DefaultConfiguration
我们在main/src/resource目录下添加log4j2.xml文件。文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"><!-- 变量配置 --><Properties><Property name="log_path">${sys:catalina.home}/logs/zcrTest/</Property></Properties><!-- appender配置 --><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /></Console><RollingFile name="DailyRollingFile" fileName="${log_path}/zcrTest.log"filePattern="${log_path}/zcrTest%d{yyyy-MM-dd}.log"><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10 MB" /> </RollingFile></Appenders><Loggers><Logger name="mylog" level="trace" additivity="false"> <AppenderRef ref="DailyRollingFile" /> </Logger> <!-- 配置要使用的appender -->
<!--additivity开启的话,由于这个logger也是满足root的,所以会被打印两遍。不过root logger 的level是error,为什么Bar 里面的trace信息也被打印两遍呢-->
<Root level="info"><AppenderRef ref="Console" /><AppenderRef ref="DailyRollingFile"/></Root></Loggers> </Configuration>
上面的log4j2.xml中以Configuration为根节点,有一个status属性,这个属性表示log4j2本身的日志信息打印级别。如果把status改为TRACE再执行测试代码,可以看到控制台中打印了一些log4j加载插件、组装logger等调试信息。
日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。对于Loggers中level的定义同样适用。
上面配置了两种日志打印的方式,打印的等级是info。
- Console:在命令行打印
- RollingFile:打印到文件中
Rolling的意思是当满足一定条件后,就重命名原日志文件用于备份,并从新生成一个新的日志文件。例如需求是每天生成一个日志文件,但是如果一天内的日志文件体积已经超过1G,就从新生成,两个条件满足一个即可。这在log4j 1.x原生功能中无法实现,在log4j2中就很简单了。
RollingRandomAccessFile的属性:
- fileName 指定当前日志文件的位置和文件名称
- filePattern 指定当发生Rolling时,文件的转移和重命名规则
- SizeBasedTriggeringPolicy 指定当文件体积大于size指定的值时,触发Rolling
- DefaultRolloverStrategy 指定最多保存的文件个数
TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${log_path}/zcrTest%d{yyyy-MM-dd}.log,最小的时间粒度是dd,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每一天生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。
3、调用
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;private static Logger logger = LogManager.getLogger(APIV1Filter.class); logger.info(..);logger.error(..)
4、如果是web项目还要加入如下的配置
<context-param><param-name>log4jConfiguration</param-name><param-value>"log4j2.xml所在目录"/log4j2.xml</param-value></context-param><listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener>
致谢,感谢您的阅读!
转载于:https://www.cnblogs.com/0201zcr/p/6263295.html
log4j2日志配置相关推荐
- log4j2日志配置不生效
问题描述 设置log4j2的配置文件,为什么不生效呢? 先上配置 Logger performanceLogger = LoggerFactory.getLogger("PERFORMANC ...
- log4j2 日志配置
log4j2.properties 配置 由于最近有一些特殊的需求:异常日志邮件异步发送配置 等等需求.原有的简单配置不能满足现有需求,特做此笔记,留作备忘也同时希望帮助一部分人 如有错误欢迎留言指正 ...
- Spring Boot + Log4j2 日志框架配置 (Maven)
参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志 , 还包括适当的Logback路由, 确保其 ...
- springboot定时删除log4j_SpringBoot整合log4j2进行日志配置及防坑指南
1.Log4j2优点 具体优点可以参考官方文档:https://logging.apache.org/log4j/2.x/ 我这边只简单说一下: 相比与其他的日志系统,log4j2丢数据的情况少:在多 ...
- Log4j 日志配置邮件实战
followtry 2017-05-01 23:40 目的 对于线上系统,必须要有系统的操作日志记录,以便于对系统处理中出现的问题进行跟踪,更重要的是对于系统错误信息和出错原因,系统能够及时主动的将错 ...
- 【Spring】SpringBoot 配置 log4j2 日志
1. 概述 官方参考文档:Log4j Apache Log4j2 是对原先的 Log4j 项目的升级版本,参考了 logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升. 异常 ...
- springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下
文章目录 1.引包 2. log4j2.xml的配置 3.配置文件中的一些说明 springmvc使用log4j2的配置,以及只有控制台打印日志,不生成文件的解决方式,mvc使用log4j2时会出现在 ...
- Log4j日志配置详解(Log4j2)
Log4j日志配置详解 一.Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file ...
- qt能使用logback_Spring boot使用logback实现日志配置
欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 目录 前言 常用日志组件 什么是日志门面和日志实现 常见的日志框架 日志使用 @slf4j注解 日志的配置 logback-spring配置 ...
最新文章
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增模块管理界面导出功能(可按条件导出)...
- 【 FPGA 】设置多周期路径约束
- 4.从单应矩阵中分离得到内参和外参(需要拍摄n=3张标定图片)
- python嵌入式系统开发_Python在开发实时嵌入式系统中的作用
- kohana::message 和config
- MySQL错误1264和1366_Mysql错误1366 - Incorrect integer value解决方法
- Socket通信 客户端加密数据,传递数据密文到服务端,服务端解密密文 输出明文
- redis循环键_Redis的并发控制
- android怎样判断插入数据是否成功_Android 端 V1/V2/V3 签名的原理
- 图解FFMPEG打开媒体的函数avformat_open_input
- POJ 1066 Treasure Hunt(计算几何)
- java学习之打印菱形和空心菱形
- ZYNQ研究----(2)基于开发板制作串口测试程序
- viper4android哪个版本好,ViPER4Android FX蝰蛇音效下载-ViPER4Android FX蝰蛇音效 v2.7.0.0_手机乐园...
- 你不知道的JavaScript(上中下)全册
- 洛谷P1878 舞蹈课 贪心 堆
- html图片标签 imag
- 股价破300迎新年开门红,投资者们中了苹果的毒?
- [bzoj1233]干草堆tower
- win 32 学习笔记(十) 对话框
热门文章
- [转]Oracle分页之三:利用PagerView来实现无刷新GridView
- 转载文章:Microsoft 将僵尸网络威胁智能分析程序引入云中以提供近实时数据
- 实业逻辑与品牌逻辑的矛盾
- filters.revealTrans.Transition用法
- Nokia Booklet 3G试用小记
- [Python] L1-051 打折-PAT团体程序设计天梯赛GPLT
- 蓝桥杯 ADV-72 算法提高 一元一次方程
- LeetCode 22. Generate Parentheses
- spring boot 处理自定义注解
- 【Vue】详解 SFC 与 vue-loader