log4j2 配置详解及使用范例
最近项目需求需要将log4j1.2 升级到log4j2,摸索了好久,得出一点经验给大家分享。
1.log4j2 官网下载最新jar包(目前log2j2都是beta版)
导入入log4j-api-2.0-beta5.jar和log4j-core-2.0-beta5.jar。
2.配置文件
log4j2的配置文件后缀名只能为.xml, .json或者 .jsn,在默认的情况,系统选择configuration文件的优先级如下:
1.classpath下名为 log4j2-test.json 或者log4j2-test.jsn文件
2.classpath下名为log4j2-test.xml
3.classpath下名为 log4j2.json 或者log4j2.jsn文件
4.classpath下名为log4j2.xml
所以建议配置文件为log4j2.xml,下面以此为例:
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d [%t] %-5p [%c] - %m%n"/></Console><RollingRandomAccessFile name="DebugAppender" fileName="./logs/lsp_admin_debug.log" append="true" filePattern="./logs/lsp_admin_debug.log.%d{yyyyMMdd}"><PatternLayout><Pattern>%d %-5p [%c] %m%n</Pattern></PatternLayout><Policies><TimeBasedTriggeringPolicy interval="24" modulate="true"/></Policies> <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="ACCEPT"/><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/></RollingRandomAccessFile><RollingRandomAccessFile name="FILE" fileName="/opt/lspv2/lsp_app/logs/lsp_app.log" append="true" filePattern="/opt/lspv2/lsp_app/logs/lsp_app.log.%d{yyyyMMdd}"><PatternLayout><Pattern>%d %-5p [%c] %m%n</Pattern></PatternLayout><Policies><TimeBasedTriggeringPolicy interval="24" modulate="true"/></Policies></RollingRandomAccessFile ></Appenders><Loggers><logger name="com.ericsson.lsp.service.sim" level="INFO" additivity="false"> <appender-ref ref="Console" /><appender-ref ref="FILE" /><appender-ref ref="Event.error" /></logger><root level="Info"><appender-ref ref="Console" /><appender-ref ref="DebugAppender" /></root></Loggers></Configuration>
1.首先介绍loggers标签,用于定义logger的lever和所采用的appender,其中appender-ref必须为先前定义的appenders的名称,例如,此处为Console。那么log就会以appender所定义的输出格式来输出log
root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式
解析:如上面的例子中,com.ericsson.lsp.service.sim中的所有类,都会按照console和FILE的appender来输出,而没有定义log的类,都按照root默认的来输出。
2.再来介绍下Appenders标签,里面放各种扩展组件,主要类型有
1.ConsoleAppender
输出结果到控制台
2.FileAppender
输出结果到指定文件
3.RollingFileAppender
同样输出结果到文件,区别是用一个buffer,因此速度会快点。
还有其他的 FlumeAppender,JDBCAppender 等等,但是我们最常用的就是前面三者了。
介绍下RollingRandomessFile 的相关属性:
name:表示该appender的名称
fileName:表示输出的文件的路径
append:是否追加,true表示追加内容到所在的日志,false表示每次都覆盖
filePattern:表示当日志到达指定的大小或者时间,产生新日志时,旧日志的命名路径。
PatternLayout:和log4j1一样,指定输出日志的格式,具体代表的意思见前面的博客中
Policies:策略,表示日志什么时候应该产生新日志,
可以有时间策略和大小策略等,上面使用的是时间策略,每隔24小时产生新的日志文件
ThresholdFilter :过滤器,log4j2中有很多的filter,但是没有仔细研究,需要的时候再看
上文中的ThresholdFilter filter 指定了输出的最低级别,如
将输出debug以及debug级别以上的,但是需求只需要输出debug级别的,所以加上下列filter
但是,这样的效果是输出debug和info两个级别的日志,所以换下两个filter的顺序就好了。
当然还有许多其他的配置,可以自己到官网查看
http://logging.apache.org/log4j/2.x/manual/appenders.html
3.使用实例
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test {
private static Logger logger = LogManager.getLogger("HelloWorld");
public static void main(String[] args){
Test.logger.info("hello,world");
Test.logger.error("There is a error here");
}
}
获取logger换了一种方式,通过logManager获取logger,其他与log4j1一样,正常使用
转载于:https://blog.51cto.com/5148737/1398581
log4j2 配置详解及使用范例相关推荐
- Log4j2配置详解
一.背景 最近由于项目的需要,需要将日志全部迁移成 log4j2 版本,之前对于项目日志的配置总是似懂非懂,最近详细整理了下知识点,本文就作为一个记录来详细记录一下 log4j2 配置的相关知识点. ...
- SpringBoot整合Log4j2以及配置详解
文章目录 标题SpringBoot整合Log4j2以及配置详解 1.加入依赖 2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下: ...
- log4j2的使用及配置详解
前言 众所周知,最近log4j被测出了漏洞,先是log4j2被测出了漏洞,漏洞影响范围为Log4j2.x <= 2.14.1:后来又被测出log4j1.X也有漏洞,范围为整个1.X版本.我们项目 ...
- SpringBoot—整合log4j2入门和log4j2.xml配置详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...
- Log4j日志配置详解(Log4j2)
Log4j日志配置详解 一.Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file ...
- Iptables防火墙配置详解
iptables防火墙配置详解 iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. (1)filter表负责过滤数 ...
- Java web之web.xml配置详解
什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...
- 从零开始玩转 logback、完整配置详解
官网地址:https://logback.qos.ch/manual/index.html 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 概述 L ...
- java log4j基本配置及日志级别配置详解,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
最新文章
- ubuntu10.10---用Apache+mod_wsgi部署python程序
- Java的12个语法糖【转】
- 从云数据迁移服务看MySQL大表抽取模式
- c语音学习-输入一个字母,输出其对应的ASCII码
- 雅思口语:填充词(句子)
- java读取.properties文件及解决中文乱码问题
- Java每天学习一点点 09.10.13
- sklearn训练模型、保存模型文件(文本、pkl)、模型文件转换(pkl2onnx)以及模型可视化
- 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
- Deep3DBox论文解读
- dexposed框架Android在线热修复
- 字体的基础知识:英文字体的特征及结构(终于找到了)
- 图像滤镜实现万能方法研究
- Windows基础知识整理
- IDEA如何执行Maven命令总结
- 极光推送入门教程-后端
- 20155110王一帆 《远程安防监控系统》课程设计个人报告
- 蒙特卡洛方法 (Monte Carlo Method)(5)
- vs2012 nuget 基础连接已经关闭:发送时发生错误
- 基于GEE的制作全球任意地方时间序列数据动画的方法
热门文章
- 【测试】禅道搭建在服务器上的操作步骤
- mysql ddl 进度_MySQL5.7 慢查询+DDL操作堵塞查询
- php 图片服务器搭建,php图像裁剪服务器搭建
- 被迫“内卷”的程序员,真的就不值钱了吗?
- Web前端程序员该如何准备面试?这些面试知识应该掌握
- 给你一份详细的web前端CSS布局指南,请查收
- 顺序图中页面、窗口等为什么当做类处理?
- win10 看计算机配置要求,win10怎么看电脑配置
- java elasticsearch_在Spring java框架中使用ElasticSearch的最佳方式
- java检查变量是否定义_JavaScript检查变量是否存在(已定义/初始化)