Log4j是Jakarta下的一个开源代码的子项目,通过Log4j,可以使用定制的格式把调试信息和日志信息输出到一个或多个需要的地方。
Log4j的组成
Log4j包括3个很重要的组件:公共类Logger、公共接口Appender和公共抽象类Layout。
1、公共类Logger
日志记录器(Logger)是日志处理的核心组件,负责日志信息的生成。根据配置的日志级别对生成的日志进行输出或截屏。
级别 描述
OFF 关闭所有日志记录的输出
FATAL 输出将会导致应用程序退出的严重错误事件信息
ERROR 输出不影响系统继续运行的错误事件信息
WARN 输出会出现的潜在错误事件信息
INFO 输出应用系统的运行过程信息
DEBUG 输出应用程序的调试信息
ALL 打开所有日志记录的输出
2、公共接口Appender
Appender负责控制日志记录操作的输出,用以指定日志信息的输出目的地(如控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等)。
Appender名称 描述
ConsoleAppender 输出到控制台
FileAppender 输出到指定文件
RollingFileAppender 输出到文件,当文件大小到达指定尺寸的时候产生一个新文件
DailyRollingFileAppender 输出到文件,每天产生一个新文件
WriterAppender 将日志信息以流格式发送到任意指定的地方
JDBCAppender 输出到指定的数据库
SMTPAppender 以邮件形式发送日志信息
3、公共抽象类Layout
Layout负责格式化Appender输出
Log4j提供的layout格式有:
Layout名称 描述
SimpleLayout 包含日志信息的级别和信息字符串
PatternLayout 根据指定的转换模式格式化日志输出
HTMLLayout 以HTML表格形式输出
TTCCLayout 包含日志产生的时间、线程、类别等信息
Log4j提供的输出函数
参数名称 描述
%m 输出代码中指定的消息内容
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类别,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符
%d 输出日志时间点的日期或时间
%l 输出日志事件的发生位置,包括类名称,发生的线程,以及在代码中的行数
Log4j的配置文件
Log4j支持两种配置文件格式,一种是XML格式的文件,另一种是Java属性文件(键=值)
log4j.properties的示例
log4j.rootLogger=DEBUG,A1,A2,A3,A4,A5,A6
# 应用于控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
# 应用于文件
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A2.Append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
# 应用于文件回滚
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A3.Append=true
log4j.appender.A3.MaxFileSize=1000KB
log4j.appender.A3.MaxBackupIndex=1
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
# 发送日志给邮件
log4j.appender.A4=org.apache.log4j.net.SMTPAppender
log4j.appender.A4.BufferSize=10
log4j.appender.A4.From=发件箱地址
log4j.appender.A4.SMTPHost=SMTP服务器
log4j.appender.A4.Subject=邮件标题
log4j.appender.A4.To=收件箱地址
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
# 用于数据库
log4j.appender.A5=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A5.URL=jdbc:mysql://localhost:3306/test
log4j.appender.A5.driver=com.mysql.jdbc.Driver
log4j.appender.A5.user=root
log4j.appender.A5.password=root
log4j.appender.A5.sql=INSERT INTO LOG4J (Message) VALUES ('%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n')
log4j.appender.A5.layout=org.apache.log4j.PatternLayout
log4j.appender.A5.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
# 应用每日生成一个日志文件
log4j.appender.A6=org.apache.log4j.DaliyRollingFileAppender
log4j.appender.A6.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A6.DatePattern=yyyyMMdd-HH'.log'
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n
Log4j使用方法
一般log4j遵循以下3步
(1)载入配置文件
PropertyConfigurator.configure(getServletContext().getRealpath("WEB-INF/log4j.properties"));
(2)获得日志记录器
//取得日志记录器Logger,名字为本类的名字。
Logger logger = Logger.getLogger(this.getClass());
(3)利用日志记录器生成日志信息,当以上2个必要步骤执行完毕后,便可以轻松地使用不同优先级的日志记录语句插入想要记录日志的任何地方了。
logger.fatal("这是一条从TestServlet产生的fatal信息!");
logger.error("这是一条从TestServlet产生的error信息!");
logger.warn("这是一条从TestServlet产生的warn信息!");
logger.debug("这是一条从TestServlet产生的debug信息!");
logger.info("这是一条从TestServlet产生的info信息!");
在web.xml中配置使用
<servlet>
<servlet-name>InitLog4j</servlet-name>
<servlet-class>InitLog4j</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
在InitLog4j.java中载入
PropertyConfigurator.configure("");
在各处需要的地方调用
Logger logger = Logger.getLogger(this.getClass());
logger.info("这是一条从TestServlet产生的info信息!");
分享到:
相关推荐
log4j相关支持的jar Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条...
本文将深入探讨“log4j相关jar包”中的关键组件,包括log4j、SLF4J(Simple Logging Facade for Java)以及log4j2,以及它们在实现日志输出功能中的作用。 **log4j** Log4j是Apache软件基金会的一个开源项目,它是...
### Log4j 相关资料知识点详解 #### 一、Log4j 概述 **Log4j** 是一个开放源代码的日志记录框架,它允许开发者以细粒度的方式控制哪些日志信息应该被记录下来。通过配置文件,可以在运行时完全定制日志的行为,...
下面我们将从配置文件类型、核心JAR包、文件渲染和Log调用四个方面来比较Log4j和Log4j2的区别。 配置文件类型 Log4j通过一个.properties文件作为主配置文件,而Log4j2则弃用了这种方式,采用的是.xml、.json或者....
Log4j是一个广泛使用的Java日志框架,由Apache软件基金会开发。它为应用程序提供了一种灵活的日志记录机制,使得开发者能够控制日志信息的输出格式、级别以及目的地。在Java应用程序中,日志功能是必不可少的,因为...
log4j相关包 需要的下 log4j-1.2.14.jar 保证能用
在提供的压缩包文件列表中,"log4j2.16.0"可能包含了Log4j2库的更新JAR文件或其他相关资源。用户应当解压这个文件,然后根据项目的具体依赖管理方式,将新的JAR添加到若依框架的类路径中,或者更新Maven或Gradle的...
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中...
apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...
分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...
Log4J是Apache软件基金会开发的一个开源的日志记录框架,主要应用于Java编程环境中。它为开发者提供了一种灵活且强大的日志记录工具,使得在Java应用程序中管理和追踪日志信息变得简便易行。Log4J的广泛应用在于其...
SLF4J-log4j12-1.7.25.jar是SLF4J和Log4j之间的桥接器,它的作用是将SLF4J的API转换为Log4j的具体实现。当项目中同时存在SLF4J接口和Log4j实现时,这个桥接器使得SLF4J能够调用到Log4j的实现,实现日志记录功能。 ...
本资源包包含了Log4j的相关jar包和使用手册,旨在帮助你快速配置和使用Log4j,以便于进行高效且有序的日志管理。 首先,Log4j的核心组件包括三个部分:Logger(日志器)、Appender(输出端)和Layout(格式化器)。...
在提供的压缩包"Log4J相关jar包.zip"中,通常会包含以下组件: 1. log4j-api.jar:这是Log4J的API模块,包含了日志记录的接口和类,供应用程序直接使用。 2. log4j-core.jar:这是Log4J的核心实现模块,提供了实际的...
Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-2.15.0....
总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用Log4j的强大功能,如自定义输出格式和多种输出目的地。通过适当的配置和测试,我们可以确保日志系统按照预期...
Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
此次提及的`log4j-api-2.12.4.jar`和`log4j-core-2.12.4.jar`是Log4j 2框架的两个关键组件,版本号为2.12.4,这个版本主要修复了之前版本中可能存在的安全漏洞。 **log4j-api-2.12.4.jar** 是Log4j 2框架的API模块...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...