背景

  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日志配置相关推荐

  1. log4j2日志配置不生效

    问题描述 设置log4j2的配置文件,为什么不生效呢? 先上配置 Logger performanceLogger = LoggerFactory.getLogger("PERFORMANC ...

  2. log4j2 日志配置

    log4j2.properties 配置 由于最近有一些特殊的需求:异常日志邮件异步发送配置 等等需求.原有的简单配置不能满足现有需求,特做此笔记,留作备忘也同时希望帮助一部分人 如有错误欢迎留言指正 ...

  3. Spring Boot + Log4j2 日志框架配置 (Maven)

    参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志 , 还包括适当的Logback路由, 确保其 ...

  4. springboot定时删除log4j_SpringBoot整合log4j2进行日志配置及防坑指南

    1.Log4j2优点 具体优点可以参考官方文档:https://logging.apache.org/log4j/2.x/ 我这边只简单说一下: 相比与其他的日志系统,log4j2丢数据的情况少:在多 ...

  5. Log4j 日志配置邮件实战

    followtry 2017-05-01 23:40 目的 对于线上系统,必须要有系统的操作日志记录,以便于对系统处理中出现的问题进行跟踪,更重要的是对于系统错误信息和出错原因,系统能够及时主动的将错 ...

  6. 【Spring】SpringBoot 配置 log4j2 日志

    1. 概述 官方参考文档:Log4j Apache Log4j2 是对原先的 Log4j 项目的升级版本,参考了 logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升. 异常 ...

  7. springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下

    文章目录 1.引包 2. log4j2.xml的配置 3.配置文件中的一些说明 springmvc使用log4j2的配置,以及只有控制台打印日志,不生成文件的解决方式,mvc使用log4j2时会出现在 ...

  8. Log4j日志配置详解(Log4j2)

    Log4j日志配置详解 一.Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file ...

  9. qt能使用logback_Spring boot使用logback实现日志配置

    欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 目录 前言 常用日志组件 什么是日志门面和日志实现 常见的日志框架 日志使用 @slf4j注解 日志的配置 logback-spring配置 ...

最新文章

  1. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增模块管理界面导出功能(可按条件导出)...
  2. 【 FPGA 】设置多周期路径约束
  3. 4.从单应矩阵中分离得到内参和外参(需要拍摄n=3张标定图片)
  4. python嵌入式系统开发_Python在开发实时嵌入式系统中的作用
  5. kohana::message 和config
  6. MySQL错误1264和1366_Mysql错误1366 - Incorrect integer value解决方法
  7. Socket通信 客户端加密数据,传递数据密文到服务端,服务端解密密文 输出明文
  8. redis循环键_Redis的并发控制
  9. android怎样判断插入数据是否成功_Android 端 V1/V2/V3 签名的原理
  10. 图解FFMPEG打开媒体的函数avformat_open_input
  11. POJ 1066 Treasure Hunt(计算几何)
  12. java学习之打印菱形和空心菱形
  13. ZYNQ研究----(2)基于开发板制作串口测试程序
  14. viper4android哪个版本好,ViPER4Android FX蝰蛇音效下载-ViPER4Android FX蝰蛇音效 v2.7.0.0_手机乐园...
  15. 你不知道的JavaScript(上中下)全册
  16. 洛谷P1878 舞蹈课 贪心 堆
  17. html图片标签 imag
  18. 股价破300迎新年开门红,投资者们中了苹果的毒?
  19. [bzoj1233]干草堆tower
  20. win 32 学习笔记(十) 对话框

热门文章

  1. [转]Oracle分页之三:利用PagerView来实现无刷新GridView
  2. 转载文章:Microsoft 将僵尸网络威胁智能分析程序引入云中以提供近实时数据
  3. 实业逻辑与品牌逻辑的矛盾
  4. filters.revealTrans.Transition用法
  5. Nokia Booklet 3G试用小记
  6. [Python] L1-051 打折-PAT团体程序设计天梯赛GPLT
  7. 蓝桥杯 ADV-72 算法提高 一元一次方程
  8. LeetCode 22. Generate Parentheses
  9. spring boot 处理自定义注解
  10. 【Vue】详解 SFC 与 vue-loader