最近项目需求需要将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 配置详解及使用范例相关推荐

  1. Log4j2配置详解

    一.背景 最近由于项目的需要,需要将日志全部迁移成 log4j2 版本,之前对于项目日志的配置总是似懂非懂,最近详细整理了下知识点,本文就作为一个记录来详细记录一下 log4j2 配置的相关知识点. ...

  2. SpringBoot整合Log4j2以及配置详解

    文章目录 标题SpringBoot整合Log4j2以及配置详解 1.加入依赖 2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下: ...

  3. log4j2的使用及配置详解

    前言 众所周知,最近log4j被测出了漏洞,先是log4j2被测出了漏洞,漏洞影响范围为Log4j2.x <= 2.14.1:后来又被测出log4j1.X也有漏洞,范围为整个1.X版本.我们项目 ...

  4. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

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

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

  6. Iptables防火墙配置详解

    iptables防火墙配置详解 iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. (1)filter表负责过滤数 ...

  7. Java web之web.xml配置详解

    什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...

  8. 从零开始玩转 logback、完整配置详解

    官网地址:https://logback.qos.ch/manual/index.html 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 概述 L ...

  9. java log4j基本配置及日志级别配置详解,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

最新文章

  1. ubuntu10.10---用Apache+mod_wsgi部署python程序
  2. Java的12个语法糖【转】
  3. 从云数据迁移服务看MySQL大表抽取模式
  4. c语音学习-输入一个字母,输出其对应的ASCII码
  5. 雅思口语:填充词(句子)
  6. java读取.properties文件及解决中文乱码问题
  7. Java每天学习一点点 09.10.13
  8. sklearn训练模型、保存模型文件(文本、pkl)、模型文件转换(pkl2onnx)以及模型可视化
  9. 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
  10. Deep3DBox论文解读
  11. dexposed框架Android在线热修复
  12. 字体的基础知识:英文字体的特征及结构(终于找到了)
  13. 图像滤镜实现万能方法研究
  14. Windows基础知识整理
  15. IDEA如何执行Maven命令总结
  16. 极光推送入门教程-后端
  17. 20155110王一帆 《远程安防监控系统》课程设计个人报告
  18. 蒙特卡洛方法 (Monte Carlo Method)(5)
  19. vs2012 nuget 基础连接已经关闭:发送时发生错误
  20. 基于GEE的制作全球任意地方时间序列数据动画的方法

热门文章

  1. 【测试】禅道搭建在服务器上的操作步骤
  2. mysql ddl 进度_MySQL5.7 慢查询+DDL操作堵塞查询
  3. php 图片服务器搭建,php图像裁剪服务器搭建
  4. 被迫“内卷”的程序员,真的就不值钱了吗?
  5. Web前端程序员该如何准备面试?这些面试知识应该掌握
  6. 给你一份详细的web前端CSS布局指南,请查收
  7. 顺序图中页面、窗口等为什么当做类处理?
  8. win10 看计算机配置要求,win10怎么看电脑配置
  9. java elasticsearch_在Spring java框架中使用ElasticSearch的最佳方式
  10. java检查变量是否定义_JavaScript检查变量是否存在(已定义/初始化)