为什么要使用日志?
开发阶段:
发现程序的问题,排错
产品阶段:
记录程序运行状态
System.out.println()的局限性
不能在运行时打开或者关闭
不能选择包或者类,在运行的的时候打开或者关闭
输出的信息没有分级
只能输出文本信息
不能改变输出的位置
Log4j可以解决以上的问题!
hibernate内置log4j,记录日志信息
log4j官方网址:
http://lgging.apache.org/log4j
下载得到:
log4j-1.2.15.jar
log4j.properties
把下载得到来的文件路径添加到当前项目的Build Path下
log4j的基本用法:
新建java project项目:
build Path: log4j-1.2.15.jar
Example.java
import org.apache.log4j.Logger;
public class Examlpe{
private static Logger logger=Logger.getLogger(Example.class);
public static voie main(String[] args){
logger.debug("In the main method ");
logger.ingo("Welcome come to http://www.cnblogs.com/hongten ");
logger.error("This is an error message");
}
}
运行这个例子的时候需要log4.properties配置文件
通过这个配置文件,我们就可以设置日志输出的格式,也就是外观
还可以设置这个日志信息输出到那里去,是到终端,还是到物理文件。
还可以记录日志的详细的样式
在src目录下:
log4j.propreties
代码:
设置终端输出日志信息:
--------------log4j的输出级别为debug:debug,appender1,当然还可以是info,error,他们的级别是debug<info<error-----------------
--------------如:现在是debug:debug.appender1,则debug,info,error都会输出-----------------
--------------如:现在是info:into.appender1,则info,error会输出-----------------
--------------如:现在是error:error.appender1,则error会输出-----------------
log4j.rootLogger=debug,appender1
--------------日志信息到终端输出-----------------
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
--------------终端输出的样式-----------------
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
设置保存日志信息的路径:
log4j.rootLogger=debug,appender1
--------------日志信息到终端输出-----------------
log4j.appender.appender1=org.apache.log4j.FileAppender
--------------日志信息保存在c:/demolog4j.log中-----------------
log4j.appender.appender1.File=c:/demolog4j.log
--------------终端输出的样式-----------------
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
设置保存日志信息的路径和保存的格式为html格式:
log4j.rootLogger=debug,appender1
--------------日志信息到终端输出-----------------
log4j.appender.appender1=org.apache.log4j.FileAppender
--------------日志信息保存在c:/demolog4j.log中-----------------
log4j.appender.appender1.File=c:/demolog4j.htm
--------------终端输出的样式-----------------
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
log4j核心
Logger
Logger完成日志信息的处理,可以分成不同的级别记录日志信息,如:debug,info,error
Logger可以定义输出的层次和决定信息是否输出
Logger输出的信息是有优先级别的: ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF------级别由小到大
常用的有:DEBUG,INFO,WARN,ERROR
Appender
Appender设置日志信息的去向 如:一个文件中,*.log,*.htm等。或者说是数据库中
Appender就是设置日志讯息输出到那个地方,可以同时指定多个输出目的地:
log4j.rootLogger=debug,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender2=org.apache.log4j.ConsoleAppender
---------------------------------------------------------------------------------
常用的Appender:
org.apache.log4j.ConsoleAppender(控制台)
ogr.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸的时候产生一个新的文件)
org.apache.log4j.WiterAppender(将日志讯息一串流格式发送到任意指定的地方)
org.apache.log4j.JDBCAppender(将日志讯息保存到数据库中)
org.apache.log4j.SMTPAppender(将日志信息以邮件的方式发送到指定的地方)
---------------------------------------------------------------------------------
Layout
Layout设置日志信息的输出样式
---------------------------------------------------------------------------------
Layout提供的layout的方式:
org.apache.log4j.HTMLLayout(一HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含日志讯息的级别和讯息字符串)
org.apache.log4j.TTCCLayout(包含日志产生时间,执行者,类别等讯息)
org.apache.log4j.PatternLayout(可以灵活的指定布局模式)
---------------------------------------------------------------------------------
org.apache.log4j.PatternLayout(可以灵活的指定布局模式)
定制所输出的日志信息的样式:
%p 输出优先级别:DEBUG,INFO,WARN,ERROR,FATAL
%r 输出字应用启动到输出该日志讯息所耗时秒数
%t 输出产生该日志事件的线程名
%f 输出日志讯息所属的类别的类别名
%c 输出日志讯息所属的类的全名
%d 输出日志时间点的日期或时间
%d{yyyy-MM-dd HH:mm:ss} 指定日期或时间格式
%l 输出日志时间发生的位置,即输出日志讯息的语句处于他所在的类别的第几行
%m 输出代码中指定的讯息
%n 输出一个换行符号
例子:
log4j.properties
log4j.rootLogger=debug,appender1
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%r [%t] %p - %c - %l - %m%n
例子二:
log4j.rootLogger=debug,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%c] %m%n
log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss}][%c] %m%n
log4j.appender.appender2.File=C:/HongtenLog4j.log
---------------------------------------------------------------------------------
配置文件
log4j.properties
log4j.xml
---------------------------------------------------------------------------------
log4j.xml
代码:
<?xml version="1.0"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
</layout>
</appender>
<root>
<priority value="ERROR"/>
<appender-ref ref="CONSOLE"/>
</root>
</log4j:configuration>
---------------------------------------------------------------------------------
关于性能影响
Log4j对程序的运行的性能影响非常小
还可以通过以下的方式,降低性能影响:
if(logger.idDebugEnabled()){
logger.debug("x="+longRunning());
}
分享到:
相关推荐
Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
分别有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 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-...
总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用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....
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
此次提及的`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是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
《深入理解Log4j 2.15.0-rc2:日志处理的关键技术解析》 Log4j,作为Java领域广泛使用的日志记录框架,一直以来都是开发者们的重要工具。这次我们关注的是其最新版本——logging-log4j2-log4j-2.15.0-rc2。这个版本...
**日志框架Log4j详解** 在Java开发中,日志记录是一项不可或缺的功能,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,并为后期维护提供重要信息。Log4j是Apache组织开发的一个强大的、灵活的日志记录框架...
《log4j-2.18.0:修复重大安全漏洞的紧急更新》 在IT领域,安全性始终是首要关注的问题。近期,一个名为“log4j2”的严重安全漏洞引发了广泛关注,它影响了所有log4j2版本,从2.0开始直到2.18.0版本之前。这个漏洞...
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-...
标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...
《深入理解log4j-api-2.17.1.jar与log4j-core-2.17.1.jar》 在Java开发中,日志管理是不可或缺的一部分,它帮助我们跟踪程序运行状态、定位错误和调试问题。Log4j作为一款广泛使用的日志框架,历经多次迭代,现在...
总的来说,"logging-log4j2-log4j-2.16.0-rc1.zip"的发布是Log4j团队对"Log4Shell"漏洞的有力回应,通过禁用可能导致安全问题的功能,提高了整体的安全标准。这一事件提醒我们,安全无小事,及时的更新和维护是保障...
这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...