首页 > 编程语言 >[Java/日志] 日志框架打印应用程序日志代码的执行情况

[Java/日志] 日志框架打印应用程序日志代码的执行情况

时间:2024-10-16 16:01:06浏览次数:1  
标签:Java log level 应用程序 slf4j version 日志 log4j

0 引言

  • 我常以为 INFO 日志级别的 应用程序日志代码,不会被执行(比如,实验1中的printTestLog函数)。但今天线上的问题,证实了这个思路是错的。

1 验证实验

  • 版本信息
  • jdk : 1.8
  • 日志组件
  • slf4j.version : 1.7.25
  • log4j.version : 2.20.0
<!-- log [start] -->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>${slf4j.version}</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>${log4j.version}</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>${log4j.version}</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>${log4j.version}</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-jul</artifactId>
	<!--<version>2.13.3</version>-->
	<version>${log4j.version}</version>
	<scope>compile</scope>
</dependency>
<!-- log [end] -->

实验1:日志框架打印应用程序日志代码的执行情况

log4j2.properties

  • log4j2.properties
## 日志的等级(自定义配置项)
##property.log.level=ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF
property.log.level=DEBUG

# ------------------- [1.1] 定义 RootLogger 等 全局性配置(不可随意修改) ------------------- #
## rootLogger, 根记录器,所有记录器的父辈
## 指定根日志的级别 | All < Trace < Debug < Info < Warn < Error < Fatal < OFF
rootLogger.level=${log.level}

... //略

应用程序代码:LogTest

  • LogTest
package test.java.lang;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LogTest {
    public static String printTestLog(){
        return "HelloWorld";//关键代码行
    }

    public static void main(String[] args) {
        log.debug( "log:{}", printTestLog() );
    }
}

实验结果

  • log.level=INFO
关键代码行 : 被执行

日志输出结果: 空
  • log.level=DEBUG
关键代码行 : 被执行

日志输出结果: 
[20XX/10/16 16:01:28.585] [TID: N/A] [DEBUG] [main] [LogTest.java:12 main] log:HelloWorld

结论

  • 无论 应用程序日志代码 logger 使用何种日志级别打印日志,代码行中的程序均会被执行,只是最终输出时由日志框架根据配置logger所属class的日志级别决定是否输出(appender)

X 参考文献

标签:Java,log,level,应用程序,slf4j,version,日志,log4j
From: https://www.cnblogs.com/johnnyzen/p/18470151

相关文章

  • Monaco Editor 实现一个日志查看器
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:文长前言在WebIDE中,控制台中展示日志是至关重要的功能。MonacoEditor作为一个强大的代码编辑器,提供了丰富的功能和灵活的API,支......
  • Java 初学 day11
    Java11常用类练习importjava.util.Scanner;/*字符串反转举例:键盘录入”abc”输出结果:”cba”*/publicclassStringTest1{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println......
  • 使用 Spring 框架构建 MVC 应用程序:初学者教程
    SpringFramework是一个功能强大、功能丰富且设计精良的Java平台框架。它提供了一系列编程和配置模型,旨在简化和精简Java中健壮且可测试的应用程序的开发过程。人们常说Java太复杂了,构建简单的应用程序需要很长时间。尽管如此,Java提供了一个稳定的平台,周围有一个非常成熟......
  • javaWeb项目-ssm+jsp股票交易管理系统功能介绍
    本项目源码(点击下方链接下载):java-ssm+jsp股票交易管理系统实现源码(项目源码-说明文档)资源-CSDN文库项目关键技术开发工具:IDEA、Eclipse编程语言:Java数据库:MySQL5.7+框架:ssm、Springboot前端:Vue、ElementUI关键技术:springboot、SSM、vue、MYSQL、MAVEN数据库工......
  • 前端新手教程:HTML、CSS 和 JavaScript 全面详解及实用案例
    一、引言在当今数字化的时代,前端开发扮演着至关重要的角色,它决定了用户与网页和应用程序交互的体验。HTML、CSS和JavaScript作为前端开发的核心技术,分别负责网页的结构、样式和交互。本教程将为前端新手全面深入地介绍HTML、CSS和JavaScript的知识点,并通过实用案例帮助......
  • Java遍历Map集合的方法
    Java中遍历  Map 集合的常用方式主要有以下几种:1.使用 keySet()方法遍历 遍历Map的key集合,然后通过key获取value。Map<String,Integer>map=newHashMap<>();map.put("one",1);map.put("two",2);map.put("three",3);for(Stringkey......
  • 6.JAVA环境准备-->JDK
    【1】下载JDK www.oracle.com/technetwork/java/javase/downloads/index.html  外网环境下载比较慢;这里推荐华为镜像进行下载,先选版本,再选对应系统新手window直接选择 https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-windows-x64.exe【2】安装JDK 下......
  • java毕业设计-基于Springboot的社区医疗服务可视化系统【d代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能管理员管理:负责系统后台维护,确保运行......
  • 明显感觉到今年的Java后端面试风向变了,难怪现在很多人都找不到工作.....
    互联网公司太多了但一些相关的面试步骤和注意事项是大差不差的,我们就以腾讯公司面试为例:面试流程......
  • 每日OJ题_牛客_礼物的最大价值_路径dp_C++_Java
    目录牛客_礼物的最大价值_路径dp题目解析C++代码Java代码牛客_礼物的最大价值_路径dp礼物的最大价值_牛客题霸_牛客网(nowcoder.com)描述:        在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子......