Log4j2入门(1)-控制台日志输出

Log4j2日志记录框架的使用教程与简单实例 1、Log4j2的使用教程 1.1简介 Log4j的1.x版本虽然已经被广泛使用于很多应用程序中,但由于出现内存泄漏等bug,代码难以维护,以及需要使用老版本的jdk等劣势,在2015年8月已经玩完。它的替代品,SLF4J,Logback,Log4j2对日志框架做了很多必要的改进。 历史上出现了很多的日记框架,如: Log4j:Apache Log4j是一个基于Java的日志记录工具。它... 阅读详情

Log4j2入门(1)-控制台日志输出

刚学习log4j2日志,对于里面的root和logger的继承关系比较迷惑,遂有此文

使用控制台输出不同级别的日志,并定义日志的继承关系测试


附上demo地址
示例项目使用maven作依赖管理

github源码地址:https://github.com/fizzme/log4j2-start1


(1)引入依赖

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.9.1</version>
  </dependency>
</dependencies>

(2)构思需求

定义Logger配置的继承

定义要输出到控制台指定的日志级别为trace
那么trace及其以上级别的日志将输出到控制台

需要做的实际上就是,将root级别的日志设置的高一些,

未在配置文件中明确设置的Logge,将会继承root Logger,日志打印按照root的appender进行

(3)Log4j简单的配置文件

Alt text

说明:
来看我们添加的配置文件log4j2.xml,以Configuration为根节点,有一个status属性(关闭自身日志输出 status=”OFF”>),这个属性表示log4j2本身的日志信息打印级别。如果把status改为TRACE再执行测试代码,可以看到控制台中打印了一些log4j加载插件、组装logger等调试信息。
1.2 、日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。对于Loggers中level的定义同样适用。
1.3、Appender可以理解为日志的输出目的地,这里配置了一个类型为Console的Appender,也就是输出到控制台。Console节点中的PatternLayout定义了输出日志时的格式

(4)配置说明:
这里配置了两个logger,一个是com.fizzbook.log4j2,一个是root的Logger
根据log4j的日志继承关系,com.fizzbook.log4j2.xxx.xx表示是logger:com.fizzbook.log4j2的子孙节点
如果不指定日志相关的日志配置LoggerConfig,就会使用父logger的

我们在getLogger以如下方式获取的LogManager.getLogger(Name);
name如果是配置中的logger的子节点,将使用父logger的appender和日志级别配置

    static Logger logger = LogManager.getLogger(App.class.getName());

配置Appender

log4j的additivity属性:
它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

(4)编写demo

Alt text

在com.fizzbook.log4j2包里面创建Hello.java来测试日志

public class Hello {

    static Logger logger = LogManager.getLogger(Hello.class.getName());

    public boolean hello() {
        logger.entry();   //trace级别的信息,单独列出来是希望你在某个方法或者程序逻辑开始的时候调用,和logger.trace("entry")基本一个意思
        logger.error("Did it again!");   //error级别的信息,参数就是你输出的信息
        logger.info("我是info信息");    //info级别的信息
        logger.debug("我是debug信息");
        logger.warn("我是warn信息");
        logger.fatal("我是fatal信息");
        logger.log(Level.DEBUG, "我是debug信息");   //这个就是制定Level类型的调用:谁闲着没事调用这个,也不一定哦!
        logger.exit();    //和entry()对应的结束方法,和logger.trace("exit");一个意思
        return false;
    }

    public static void main(String[] args) {

        Hello hello = new Hello();
        logger.info( "Hello.class.getName():"+ Hello.class.getName());
        hello.hello();

    }

}

日志输出结果:

2017-11-21 16:54:48.153 [main] INFO  com.fizzbook.log4j2.Hello - Hello.class.getName():com.fizzbook.log4j2.Hello
2017-11-21 16:54:48.157 [main] TRACE com.fizzbook.log4j2.Hello - Enter
2017-11-21 16:54:48.157 [main] ERROR com.fizzbook.log4j2.Hello - Did it again!
2017-11-21 16:54:48.157 [main] INFO  com.fizzbook.log4j2.Hello - 我是info信息
2017-11-21 16:54:48.157 [main] DEBUG com.fizzbook.log4j2.Hello - 我是debug信息
2017-11-21 16:54:48.157 [main] WARN  com.fizzbook.log4j2.Hello - 我是warn信息
2017-11-21 16:54:48.157 [main] FATAL com.fizzbook.log4j2.Hello - 我是fatal信息
2017-11-21 16:54:48.158 [main] DEBUG com.fizzbook.log4j2.Hello - 我是debug信息
2017-11-21 16:54:48.158 [main] TRACE com.fizzbook.log4j2.Hello - Exit

该类的全限定名是com.fizzbook.log4j2.Hello,那么获取的Logger就是com.fizzbook.log4j2.Hello将继承Logger,输出trace级别及以上的日志,也就是将各级别的日志结果全部输出

我新创建一个包并重命名进行测试

此时将不是继承com.fizzbook.log4j2,因为使用getClass.getName获取的Logger名称跟包名相关,并没有与之相关的父节点,所以默认继承root Logger,root Logger级别比较高,只会输出error级别及以上的日志

复制一份Hello.java代码放入新建的包中:
Alt text

结果如下:

2017-11-21 17:01:20.620 [main] ERROR com.fizzbook.log4j2_02.Hello - 当前logger的名称 :com.fizzbook.log4j2_02.Hello
2017-11-21 17:01:20.623 [main] ERROR com.fizzbook.log4j2_02.Hello - Did it again!
2017-11-21 17:01:20.623 [main] FATAL com.fizzbook.log4j2_02.Hello - 我是fatal信息

只输出了error和fatal级别的,跟我们定义的root Logger的日志级别一样。证明了推论

【Log4j日志输出】控制台输出、输出到文件:简单使用示例 官方下载 链接:Apache Log4j Download Mirrors 使用方式 下载完毕后解压: 复制jar包 把log4j-1.2.17.jar包放进项目里,添加到Java Build Path 在src同级目录创建log4j.properties log4j.rootCategory=DEBUG, CONSOLE,LOGFILE log4j.appender.CONSOLE=... 阅读详情

相关推荐

Spring Boot 整合 log4j2 日志配置教程

在项目推进中,如果说第一件事是搭建 Spring 框架的话,那么第二件事情就是在 Sring 基础上搭建日志框架,此篇文章是博主在学习过程中使用 Spring Boot 搭建项目时整合 Log4j2 日志的总结共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF机制:如果一条日志信息的级别大于等于配置文件的级别,就记录All:最低等级的,用于打开所有日志记录。

m0_74823561的博客 1235

log4j2实现日志输出

Log4j2是一个功能强大的日志框架,它可以帮助我们轻松地记录和管理应用程序的日志信息。在Spring Boot应用程序中使用Log4j2也非常简单,只需要在项目中添加Log4j2的依赖和配置文件,然后在代码中使用Logger对象输出日志即可。在实际开发中,我们可以根据自己的需要定制Log4j2的日志输出格式和级别,以满足不同的需求。同时,我们也需要注意日志输出的性能问题,避免在高并发场景下过多地输出日志信息,从而影响应用程序的性能。

YXXXYX的博客 5355

Java中使用log4j进行日志打印,轻松实现日志输出和管理

控制台输出格式为PatternLayout指定的格式,文件输出格式也为PatternLayout指定的格式,文件名为/path/to/log/file.log,文件大小不超过10MB,最多保留10个备份文件。log4j支持将日志输出到不同的目的地,例如控制台、文件、数据库等。在项目的classpath下创建log4j.properties文件,配置日志输出的级别、输出目的地、输出格式等信息。其中,Logger.getLogger()方法的参数为当前类的Class对象,可以保证日志输出的类名和行号正确。

猿小白的博客 5004

log4j2日志输出到控制台-Maven工程

Log4J 内置的标准日志级别* 如果默认的等级不能满足你的开发需求,可以自定义日志输出等级。 在使用时通过 Logger.log()方法调用自定义日志级别配置log4j2.xml文件 2.2 添加maven依赖 3.实战测试 3.1 测试类 3.2 运行结果展示 log4j日志管理框架可以很好的管理输出的日志内容,在调试,开发,运行等不同阶段配置不同的日志等级,有效提高了开发效率。log4j还可以配置日志输出到文件、数据库、邮件等位置,有需要的小伙伴自行探索一下,推荐参阅官方文档。 https:

海若_matrix的博客 2247

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 749

车辆横向控制MPC实战:从‘老王模型’到CasADi求解的保姆级避坑指南

本文详细解析了车辆横向控制MPC的实战应用,从经典动力学模型选择到CasADi求解器的优化配置,提供了一套完整的避坑指南。重点介绍了车辆动力学模型的验证要点、CasADi环境的高效配置技巧以及MPC问题建模的核心要素,帮助开发者快速实现稳健的横向控制方案。

weixin_42524499的博客 339

Log4j 配置详解以及使用案例

Log4j 的基本使用案例,以及相关配置信息详解,介绍了 Log4j 中的日志级别等等

SUNK2014的博客 5178

对工时评估的思考:当AI颠覆了coding效率

在AI时代,“人日”作为软件工时度量衡已然失效。开发的价值核心正从“编码实现”转向“深度思考”与“精准沟通”——即如何将人类的模糊需求精确地传达给AI。当最有价值的“思想工作”变得最难量化时,传统的项目管理范式随之动摇。我们必须超越对过程的算计,开始探索衡量思想、沟通与业务价值的新标尺。

架构师刘7的博客 1014

Springboot开发一个小而美的博客(三)

框架搭建 springboot 版本是2.5.3 jdk版本是1.8 1 引入Springboot 模块 DevTools Lombok Web Thymeleaf Mybatis Mysql 2 数据库连接配置 spring: datasource: url: jdbc:mysql://localhost:3306/blog?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 driver-c

weixin_45061732的博客 349

离散数学期末考试试卷(两套)-熟悉题型

3.设集合A={a,b,c,d}上有自反关系R={,,,,},对称关系S={,,,}。6.设集合A={1,2,3},B={u,v,w},C={a,b,c},f是集合A到集合B上的映射,g是集合B到集合C上的映射,f={, , },g={},则复合函数g。5. 设集合A={a,b,c,d,e},下列选项中哪一个集合不是A的划分( )。

muse3159546973的博客 6943

Unity性能优化 - 动态图集

Unity 动态图集是 Unity 引擎中用于处理游戏纹理优化的一种技术。本文介绍了什么是动态图集,动态图集的优缺点,以及提供了一套完整的代码供大家参考。

qq_33808037的博客 4823

springboot配置log4j2输出mybatis的sql语句日志记录,包括控制台输出sql语句

1、日志记录效果图 2、控制台输出效果图 1、application-dev.yml # mybatis mybatis: mapper-locations: classpath:mapper/*.xml #注意:一定要对应mapper映射xml文件的所在路径 type-aliases-package: com.xuan.entity # 注意:对应实体类的路径 configu...

小白轩的博客 1万+

【头歌实训:逆置顺序表】

根据提示,在右侧编辑器补充函数rev的代码,使用顺序表L的空间就地逆置L。},要求时间复杂度为O(n),空间复杂度为O(1)。第一行为顺序表逆置之前的元素。每个数据后一个空格。第二行为顺序表逆置之后的元素。每个数据后一个空格。本关任务:设计一个算法,将一个顺序表L的元素{a。第一行为顺序表中元素个数n。第二行为空格隔开的n个整数。开始你的任务吧,祝你成功!

guang_Lee的博客 988

SpringBoot配置log4j2日志及输出到文件中

文章目录一、java.util.logging、log4j、slf4j的区别二、配置日志三、指定输出文件1.如果只是使用默认的logback ,只需要在application.properties中配置2. 使用log4j 一、java.util.logging、log4j、slf4j的区别 java.util.logging java自带的日志实现类 log4j 比java.util.loggi...

赖胖子的博客 9906

无人机避障——感知篇(采用Mid360复现Fast-lio)

本文介绍了在Ubuntu 18.04和ROS Melodic环境下,使用Xavier-nx电脑和Livox Mid-360激光雷达编译和运行FAST-LIO工程的步骤,包括创建工作空间、编译驱动和FAST-LIO源码,以及运行launch文件进行建图的过程。

weixin_45390670的博客 3533

AI Agent在医疗诊断中的智能应用研究

本文探讨了AIAgent在医疗诊断中的智能应用,分析了其技术原理、实际案例及发展挑战。AIAgent通过机器学习算法处理医疗数据,提升诊断准确性和效率,市场规模预计2025年达200亿美元。核心技术包括数据预处理、深度学习模型和隐私保护方法。应用案例涵盖肺癌筛查、阿尔茨海默病预测等,但面临数据偏差、伦理责任等挑战。未来趋势包括多模态学习、个性化医疗和量子计算融合。随着技术优化和伦理完善,AIAgent将成为医疗体系的重要组成部分。

郑伟强dev的专栏 87

springboot整合Log4j2(将日志输出到指定文件)

为什么选择Log4j2? 1.性能较强 2.扩展性强,可以自定义level。 3.支持kafka 4.数据稳定 如何整合log4j2? 第一步:新建一个springboot项目 第二步:引入jar包 <dependency> <groupId>org.springframework.boot</groupId> <a...

流星007 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

log4j2控制台输出乱码

再解决tomcat控制台乱码后,又发现lo4j2 控制台打印乱码 看了一下设置,发现其实挺简单的。在解决tomcat问题中,把idea 控制台输出默认UTF-8,而log4j2控制台没有设置,所以自然出现乱码了 <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

输微 2833

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

eclipse中使用log4j2在控制台输出彩色日志

目录 一.eclipse中安装Ansi Console 二.在log4j2配置文件中配置颜色样式 三.在log4j2.component.properties 配置文件中启用颜色配置 四.附上log4j2配置文件 1.log4j2.xml 2.log4j2.component.properties 一.eclipse中安装Ansi Console 打开eclipse,在Help-&...

E=mc² 3768

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在idea中如何在控制台输出日志?——用log4j

简单记录下idea中如何配置使得在控制台输出日志 首先做个对比,输出日志和不输出日志有什么区别? 下面的例子是我在学习mybatis中查询数据库时返回的结果 不输出日志的结果显示如下: 输出日志的结果显示如下: 经过对比,是不是在输出结果的同时把日志也给打印出来显示更方便我们调试,在有错误时也能让我们更容易发现并更正错误。 那么,怎么做呢?往下 首先在我们的maven项目下的pom.xml文件添加以下的依赖: <dependency> .

weixin_44107140的博客 1万+

Log4j日志输出格式

Log4j日志输出格式 对于我才开始工作来说,输出日志唯一的目的就是打印代码的调试信息,当有项目运行什么问题或者错误可以通过查看日志快速的找到问题根源(这也是我来公司最开始就遇到的问题)。 先分享一个公司框架自带的通用日志文件(log4j.properties) log4j.rootLogger=DEBUG, stdout, filelog //目的地为stdot,输出地址为控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j

weixin_43573186的博客 6418

使用log4j2,控制台可以正常输出日志,但是log4j2日志文件为空?

Log4j-2-does-not-write-to-file.md 问题: 使用log4j2, 控制台可以正常输出日志,但是log4j2日志文件为空? 配置文件log4j2.xml配置如下: &lt;!-- log4j2.xml --&gt; &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;Configuration&gt; ...

我的开发博客(公众号:Web后端技术) 2万+

log4j2日志配置颜色

一、需求说明 相关环境说明:maven 3.5.0,jdk1.8 maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.s

u010999809的博客 1万+

MyBatis3 用log4j在控制台输出 SQL

为什么要在控制台输出 SQL 呢?当然是为了开发调试的时候方便了。如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。输出的信息:[org.mybatis.spring.SqlSessionUtils]-Creating a new SqlSession [org.mybatis.spring.SqlSessionUtils]-SqlSession [org.apach

无知人生,记录点滴 3万+

springboot日志配输出路径配置_SpringBoot配置log4j2日志及输出到文件中

文章目录一、java.util.logging、log4j、slf4j的区别二、配置日志三、指定输出文件1.如果只是使用默认的logback ,只需要在application.properties中配置2. 使用log4j2四、控制台日志添加颜色4.1 修改Intellj IDEA配置4.2 添加高亮五、定期删除日志文件一、java.util.logging、log4j、slf4j的区别java....

weixin_39779528的博客 4730

springboot日志体系---log4j2

最近调试代码和运行代码的时候,一些日志打印的乱七八槽,根据日志很难快速定位到问题,感觉自己是为了打印日志而打印日志,花了点时间把日志的相关整理了一下,意在让日志发挥最大的作用。前言本文解决以下问题: - 为何使用log4j2 - springboot下log4j2日志的使用 - 控制台日志显示的级别和文件保存的日志不同 - idea控制台颜色日志的输出正文log4j2

纸上得来终觉浅,绝知此事要躬行 1万+
上一篇: vmware克隆centOS虚拟机
下一篇: log4j2入门(2)-日志多appender输出
fizzblock
博客等级 码龄9年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值