log4j3分钟入门

新一代Java日志框架Log4j3安全配置指南.pdf 文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望掌握一门强大且通用的编程语言,来推动自己的职业发展?Java 就是你的不二之选!作为一种广泛应用于企业级开发、移动应用、大数据等众多领域的编程语言,Java 以其跨平台性、高性能和丰富的类库,为开发者提供了一个稳定而高效的开发环境。 立即下载

       我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息、运行时的日志记录及审计。调查显示,日志代码占代码总量的4%。通常大家可以简单地使用System.out.println()语句输出日志信息,但是在发布时,通常不想在正式的版本中打印这些开发时的调试信息,于是又要手工地把这些语句删除,所以大量的这样的System.out.println()调试语句会带来麻烦。更多做法是把它封闭一个简单的输出,比如:

  1. public final class Debug 
  2. {
  3.     public static final boolean debugOn = true;
  4.     public static void println(String msg) {
  5.         if (debugOn) 
  6.         {
  7.             System.out.println(msg);
  8.         }
  9.     }
  10. }

      这样就可把代码中要用System.out.println()输出调试信息的地方全用Debug.println()替代,当在发布时只需把Debug类中的debugOn改成false即可。这样做虽然在一定程度上解决了问题,但如果需要的是更复杂的日志系统呢,比如把日志信息保存为文件等别的形式;又或是当系统在试运行了一段时间后我们又要更改某些试运行时的测试信息。如果真的遇到这样的情况,也行就只有修改代码了,这样又给开发工作带来了麻烦。

       Log4J是Apache软件基金会Jakarta项目下的一个子项目,是用Java编写的优秀日志工具包。通过Log4J可以在不修改代码的情况下,方便、灵活地控制任意粒度的日志信息的开启或关闭,然后使用定制的格式,把日志信息输出到一个或多个需要的地方。并且,Log4J还有一条平滑的学习曲线,在三分钟内就可学会它的简单使用。随着使用深入,你会发现Log4J功能的强大,几乎可以满足日志方面的所有需要。

第一个log4j程序及其原理


1 第一个log4j程序

        让我们从现在开始记时,看完成第一个log4j程序要不要3分钟。首先log4j-1.2.7.jar考到你的类路径下。然后创建一个类,代码如下:
  1. package TestLog4j;
  2. import org.apache.log4j.Logger;
  3. import org.apache.log4j.BasicConfigurator;
  4. import org.apache.log4j.PropertyConfigurator;
  5. import org.apache.log4j.Priority;;
  6. public class TestLog4j 
  7. {
  8.     //代码(1)
  9.     static Logger logger = Logger.getLogger(TestLog4j.class.getName());
  10.     public TestLog4j(){}
  11.     public static void main(String[] args)
  12. {
  13.      //代码(2)
  14.         BasicConfigurator.configure();
  15.          //代码(3)
  16.         logger.debug("Start of the main() in TestLog4j");
  17.         logger.info("Just testing a log message with priority set to INFO");
  18.         logger.warn("Just testing a log message with priority set to WARN");
  19.         logger.error("Just testing a log message with priority set to ERROR");
  20.         logger.fatal("Just testing a log message with priority set to FATAL");
  21.         logger.log(Priority.DEBUG, "Testing a log message use a alternate form");
  22.         logger.debug("End of the main() in TestLog4j");
  23.     }
  24. }

最后运行这个类,你就会看到运行结果为:
0 [main] DEBUG TestLog4j.TestLog4j  - Start of the main() in TestLog4j
10 [main] INFO TestLog4j.TestLog4j  - Just testing a log message with priority set to INFO
10 [main] WARN TestLog4j.TestLog4j  - Just testing a log message with priority set to WARN
21 [main] ERROR TestLog4j.TestLog4j - Just testing a log message with priority set to ERROR
21 [main] FATAL TestLog4j.TestLog4j  - Just testing a log message with priority set to FATAL
111 [main] DEBUG TestLog4j.TestLog4j  - Testing a log message use a alternate form
111 [main] DEBUG TestLog4j.TestLog4j  - End of the main() in TestLog4j
        好了,看一看你的表,应该不到3分钟吧。在这短短的3分钟里,我们做了些什么呢?下面我们来分析一下代码。
       1)    首先代码(1)先通过Logger类的getLogger()方法得到一个Logger类的对象。在getLogger()方法中,通常把所在的类的Class对象或是所在类的全名作为参数。运用log4j输出日志要用到Logger对象。
       2)    然后代码(2)进行一些必要的初始化,如要把调试信息输出到哪。当用System.out.println()时可以很明确的知道要把信息输出到标准输出设备且只能输出到那里。运用log4j,我们可以输出到许多地方,如控制台、文件、HTML文件等,至于要输出到哪里,就要自己进行初始化。在代码(2),我们调用自带的初始化方法来完成初始化。用这个方法进行初始化就不能体现出log4j的灵活性,所以基本上不会这样做。Log4j提供了用XML文件或Java配置文件来配置设置的方法,在下面我们将进行介绍。
      3)    接着代码(3)就是输出信息的代码了。你可以看到代码(3)中尝试了用几种不同的方法来输出信息,对于这几种信息的作用,我会在下面进行介绍,你现在只需把它当成是输出语句就行。
最后,我们来看一下运行结果(日志信息)的意义。第一个数字是指程序开始运行到运行该日志语句所经历的毫秒数(用来做一点运行效率分析也不错),“[main]”是日志事件发生的线程,随后的“DEBUG”、“INFO”等信息是相应日志信息的优先级别,“TestLog4j.TestLog4”是当前TestLog4所在的包和名称,最后是日志信息。
2 实例原理

        虽然完成了第一程序了,但程序中的内容还是不太了解。好,现在我就对上面的例子用到的log4j的原理进行讲解。在以后的章节中,我都会采取这种先实例,再根据实例来介绍所涉及的log4j原理的方法。
2.1 记录器Logger

        Logger类是在log4j1.2以后才有的,以前是用Category类来实现现在的Logger类的功能的。从API可知,Logger类是Category类的子类。Logger类的代码如下:
  1. package org.apache.log4j;
  2. public class Logger {
  3.     // 创建和取回方法:
  4.     public static Logger getRootLogger();
  5. public static Logger getLogger(String name);
  6. public static Logger getLogger(Class class1);
  7.     // 打印方法:
  8.     public void debug(Object message);
  9.     public void info(Object message);
  10.     public void warn(Object message);
  11.     public void error(Object message);
  12.     public void fatal(Object message);
  13.     // 常用打印方法:
  14.     public void log(Level l, Object message);
  15. }

在讨论Logger类中的方法之前,我先讲一下log4j中的级别(level)的概念。
2.1.1 级别Level

        Log4j中的日志级别分为五种:DEBUG、INFO、WARN、ERROR和FATAL,这五种级别从左到右级别依次增加。
2.1.2 Logger中的打印函数与级别

        对于每一个记录器,我们都可对它赋于一定的级别,而打印函数打印的即是相应级别的信息。当对一个级别为A的Logger调用级别为B的打印方法时,只有当B>=A时才会进行打印。例如,如果有一个级别为WARN的Logger对象logger,只有对它调用logger.warn (message)、logger.error (message)和logger.fatal (message)这三个打印函数才会打印信息;而调用logger.debug (message)和logger.info (message)则不会打印信息,因为debug()函数只有当logger的级别为DEBUG时才打印信息,info()函数只有当logger的级别为INFO时才打印信息。
除了对应于每一个级别有一个打印函数外,在Logger类中还有一个log(),它可以让你通过参数来指定一个打印信息的打印级别。

        引入级别后就可通过修改调试的级别来控制某个调试信息是否输出。假设我们有的信息是在开发时才需要输出的(称为测试信息),那么我们把输出测试信息的Logger的级别在开发时设为DEBUG级别的,并用debug(Object message)函数来进行打印。当要发布系统时,只需把相应的Logger的级别调高就可以屏蔽掉测试信息。
如何运用好DeepSeek为自己服务:智能增强的范式革命 || 目录 1.1 认知增强的三次浪潮1.2 DeepSeek认知增强模型1.3 人机认知耦合协议1.4 认知增强的数学基础。 阅读详情

相关推荐

LabVIew串口收发的一些问题

LabView串口收发实验总结

weixin_45508826的博客 2065

Java日志——Log4j的使用及原理

文章目录什么是Log4jLog4j的日志级别(Level)org.apache.log4j.Priorityorg.apache.log4j.Levelcom.log4j.Logger类org.apache.log4j.spi.AppenderAttachable接口org.apache.log4j.Category类com.log4j.Logger类 什么是Log4j Log4J 是 Apach...

Logger 1425

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

log4j.xml配置

log4j.xml

Behind You! 637

Arduino跑通ssd1306_spi显示屏

代码首先,您需要下载两个库:● Adafruit GFX库,这是核心图形库,提供了一组通用的图形基元(点、线、圆等)。它需要与特定于硬件的库对应。● Adafruit SSD-1306 OLED显示库,这是基于SSD1306驱动程序的OLED显示器的库。解压缩这两个库并将它们添加到Arduino库文件夹中,然后运行Arduino IDE并从OLED库中打开SPI示例。

Leo ICer的博客 1493

手把手教你用Foobar2000播放DSD音频(含DOP设置与SPDIF输出教程)

本文详细指导如何在Foobar2000中播放DSD音频,重点解析了DOP协议的原理与设置方法。通过安装SACD插件、配置输出设备及启用DOP模式,实现DSD音频的原生比特流输出,并特别讲解了如何通过SPDIF接口传输DSD信号,帮助发烧友充分释放高清音频设备的潜力。

weixin_29290963的博客 1816

log4j.xml配置详解

可能的取值从小到大依次为"all"、"debug"、"info"、"warn"、"error"、"fatal"和"off"。%c : 输出所属类的全名,可在修改为 %C{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)class [#IMPLIED attribute] : 定义level对象所属的类,默认情况下是"org.apache.log4j.Level类。

wenwentana的博客 9656

从轻量化到高精度:3DXML 转 STP 的工程数据升级技术指南

本文详细解析了3DXML转STP格式的工程数据升级技术,对比了两种格式在轻量化和高精度方面的特性差异,并提供了CATIA、FreeCAD及Python编程等多种专业级转换方案。通过实际案例展示了如何确保转换过程中的数据精度,适用于CAD设计、精密制造等场景,帮助工程师实现工程数据的高效升级。

weixin_29201859的博客 215

1.log4j

1 log4j 1.1 Log4j简介 使用System.out.println的局限性 无法在不修改代码前提下,控制日志开关 1.2 示例1 导入log4j的jar包(log4j-1.2.17.jar) Log4jTest import org.apache.log4j.BasicConfigurator; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Logger; import org.apache.log4j.P

hanzong110的博客 254

在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案

本文主要介绍了在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案,希望能对使用claude code的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 13万+

100天精通Python(爬虫篇)——第118天:selenium自动化操作浏览器基础大总结

一、Selenium框架环境搭建 1. 下载模块 2. 安装浏览器驱动WebDriver 二、基础操作 1. 打开浏览器 2. 无界面模式 3. 元素定位 4. 元素操作 5. 前进后退 6. 执行js 7.页面等待 隐式等待(常用) 显式等待(了解) 三、进阶操作 1. 使用代理ip 2. 修改请求头 3. 隐藏指纹特征.....................

努力让自己发光,对的人才能迎着光而来 10万+

LOG4J 入门

LOG4J 入门 我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息、运行时的日志记录及审计。调查显示,日志代码占代码总量的4%。通常大家可以简单地使用System.out.println()语句输出日志信息,但是在发布时,通常不想在正式的版本中打印这些开发时的调试信息,于是又要手工地把这些语句删除,所以大量的这样的System.out.println()调试语句会带来

静夜思 559

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 371

log4j2 入门教程

log4j2 中4是和for谐音,j是Java的意思,2是第二代,即log4j2是log4j1.x的升级版,大概在2014年开始发行release版本,号称比log4j 1.x 在多线程下具有更高的性能,当然相比于log4j 1.x,使用更加方便。

timchen525的专栏 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

3分钟搞定log4j冲突:效率提升全攻略

传统手动解决log4j冲突的方法虽然可行,但效率低下且容易出错。相比之下,现代工具如InsCode(快马)平台不仅节省时间,还能提高准确性。对于开发者来说,掌握这些工具可以大幅提升工作效率,将更多时间投入到核心业务逻辑的开发中。

ThunderstormLynx23的博客 965

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

3分钟解决Log4j2配置问题:传统vsAI方法对比

实现这个工具特别顺畅,Kimi-K2模型的自然语言理解能力可以直接解析用户输入的报错信息,而一键部署功能让原型秒变可访问的在线服务。对于这种需要持续运行的诊断类应用,不用操心服务器配置的感觉真的太省心了。时,传统调试和AI辅助的效率差距可能让你少加半天班。1. 传统方式需要开发者具备完整的Log4j2知识体系。2. AI工具通过知识库自动匹配解决方案,甚至能处理。- 传统方式平均耗时47分钟(含3次错误尝试)- AI工具从输入错误到生成方案仅2分18秒。对冲突问题:检测版本不兼容并推荐稳定组合。

SunstoneLion34的博客 498

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring Boot整合Log4j实战,10分钟搞定日志系统

通过整合Spring Boot和Log4j2,建立了一个强大、高效、可维护的日志系统。好的日志实践不仅能帮助你更快地定位问题,还能为性能优化、用户行为分析提供宝贵数据。

ly853602的博客 1798

Log4j 日志框架:从入门到封神的通关秘籍

生产环境别开DEBUG/TRACE:日志太多,磁盘扛不住;log.info("用户{}", name)比log.info("用户" + name)性能好;敏感信息别打日志:密码、手机号、身份证号要脱敏;用滚动日志:RollingFileAppender/DailyRollingFileAppender,避免文件过大;按包/类配置级别:不同模块日志按需输出,排查更高效。Log4j不是花里胡哨的技术,而是能实实在在提高排错效率的工具。告别,用Log4j把日志玩明白,线上问题排查效率直接翻倍!

smile_WangDuoduo的博客 631

log4j2配置

java工程配置log4j2 1.需要引用的jar包如下: log4j-api-2.12.1.jar log4j-core-2.12.1.jar 2.log4j2.xml配置 <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO &...

u013015301的博客 2749

3分钟用快马AI解决Log4j2找不到实现的经典错误(附可运行模板)

上可以直接一键部署运行,实时看到各级日志在控制台和文件中的不同表现。不用再折腾本地环境,对于快速验证配置特别友好。平台自动生成的Maven配置还会智能规避CVE漏洞版本,这对安全敏感项目真是省心不少。这个经典的错误提示就像老朋友一样,每次忘记配置log4j-core依赖时就会准时出现。不过这次我发现了一个超级高效的解决方法——用。如果你也正在被Log4j2配置困扰,不妨试试这个能直接跑起来的解决方案,相信能帮你节省大量踩坑时间。一键生成完整可运行的项目模板。这个方案最让我惊喜的是,在。

EmeraldWolf23的博客 961

Log4j生成压缩形式日志

Log4j生成压缩形式日志 转:http://blog.youkuaiyun.com/zhaosen241/article/details/3248331   Log4j提供了强大的日志功能,但是只能生成文本形式的日志文件,对于输出日志很频繁的应用会产生一些资源的浪费,例如我们的一个项目平均每20分钟就会生成一个大约10M的日志文件。为了节约硬盘资源,最近几天修改了一下Log4j,做了一个自己...

java2_0_1_0的专栏 4226

Log4j实践之使用log4j发送报警邮件

配置文件 log4j.rootLogger=DEBUG,CONSOLE,DailyRollingFile,MAIL log4j.addivity.org.apache=true #ERROR,WARN,INFO,DEBUG # 将日志输入到控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.T

筑梦者 3932

SpringBoot项目启动报错:LoggerFactory冲突?5分钟搞定Logback与slf4j-log4j的相爱相杀

本文深入解析SpringBoot项目启动时常见的“LoggerFactory is not a Logback LoggerContext”错误。该错误源于classpath上存在多个日志框架(如Logback与slf4j-log4j12)冲突,导致SLF4J绑定混乱。文章提供了从依赖树分析到四种解决方案(排除法、统一版本、替换实现、处理顽固依赖)的完整实战指南,帮助开发者彻底解决日志框架冲突问题。

kkk56的博客 1012

log4j日志 linux配置,Log4j2日志配置

背景Log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量、可配置的审计型日志、基于插件架构的各种灵活配置等。1、所需jar1)maven配置org.apache.logging.log4jlog4j-api2.7org.apache.logging.log4jlog4j-core2.7网页的话还要加入如下的mave...

weixin_42701905的博客 1054

[转]LOG4J 入门

[转]LOG4J 入门<br />摘自:http://wucuixia.blog.sohu.com/12057602.html<br />我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息、运行时的日志记录及审计。调查显示,日志代码占代码总量的4%。通常大家可以简单地使用System.out.println()语句输出日志信息,但是在发布时,通常不想在正式的版本中打印这些开发时的调试信息,于是又要手工地把这些语句删除,所以大量的这样的System.out.println()调试语句会带来

lmsss的专栏 225

快马AI助力Log4j2配置:3分钟打造高性能Java日志系统

通过这次实践,我发现使用快马平台可以大大简化Log4j2的配置过程。自动生成基础配置,省去查阅文档的时间内置的代码编辑器可以实时验证配置一键部署功能让项目快速上线AI辅助功能能给出合理的配置建议如果你也在为Java项目的日志管理发愁,不妨试试在InsCode(快马)平台上快速搭建一个基于Log4j2的日志系统。整个过程比我预想的要简单很多,特别是对于新手来说,可以避免很多常见的配置错误。

NightshadeEagle34的博客 913
上一篇: Java中3DES加密解密调用示例
下一篇: 在Windows 2000下完全卸载Oracle
neverthink
博客等级 码龄21年 43粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值