java控制台换行_log4j2使用教程--JAVA成长之路

本文介绍了Log4j2作为log4j 1.x的升级版,具备更好的异常处理、性能提升、自动配置刷新和无垃圾机制。详细讲述了在Java项目中配置Log4j2的步骤,包括添加依赖、配置log4j2.xml文件,以及解释了配置文件中的关键元素如Logger、Appender和Layout。同时,对比了log4j2与其他日志框架的性能表现,强调了log4j2在同步和异步模式下的优越性能。
摘要由CSDN通过智能技术生成

Log4j2简介

log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。

log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:

1、异常处理:在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。

2、性能提升:log4j2相较于log4j 1和logback都具有很明显的性能提升。

3、自动重载配置:参考了logback的设计,提供自动刷新参数配置,可以动态的修改日志的级别而不需要重启应用。

4、无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致的jvm gc。

以Java项目为例介绍log4j2配置步骤

工程结构如下

35d15804304722089201bf272dcc3619.png

1.添加log4j2相关jar包(maven)

org.apache.logging.log4j    log4j-api    2.7org.apache.logging.log4j    log4j-core    2.7

2.log4j2.xml配置和简单说明

<?xml version="1.0" encoding="UTF-8"?>

3.测试类

import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger; public class log4j2Test {     private static Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);     public static void main(String[] args) {        for(int i=0;i<3;i++){            // 记录trace级别的信息            logger.trace("log4j2日志输出:This is trace message.");            // 记录debug级别的信息            logger.debug("log4j2日志输出:This is debug message.");            // 记录info级别的信息            logger.info("log4j2日志输出:This is info message.");            // 记录error级别的信息            logger.error("log4j2日志输出:This is error message.");        }    }}

控制台输出结果

ad627e7a78eb1ec4f4de17068c9e5a3d.png

日志文件输出结果

d56e7915a1e4e336da43208dfaad3ac9.png

log4j2配置说明

log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本常用.xml后缀的文件进行配置,除此之外还包含.json和.jsn配置文件

log4j2虽然采用xml风格进行配置,依然包含三个组件,分别是 Logger(记录器)、Appender(输出目的地)、Layout(日志布局)。

XML配置文件解析

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

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

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

Console节点用来定义输出到控制台的Appender.File节点用来定义输出到指定位置的文件的Appender.RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

通过在子节点中加入进行日志布局

%c 输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围 如:"com.sun.aaa.classB",%C{2}将使日志输出输出范围为:aaa.classB%d 输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数%n 换行符%m 输出代码指定信息,如info(“message”),输出message%p 输出日志的优先级,即 FATAL ,ERROR 等%r 输出从启动到显示该条日志信息所耗费的时间(毫秒数)%t 输出产生该日志事件的线程名

3、Loggers节点,常见的有两种:Root和Logger.

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

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

logback log4j log4j2 性能实测

4f1869ce41592f62f89220ac0d128a6a.png

可见在同步日志模式下, Logback的性能是最糟糕的

而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的

3e6567e04e7d68160d290650889fea97.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值