1、 Log4j是什么?
Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: http://jakarta.apache.org/log4j 。
2、Log4j的概念
<!--startfragment --> Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,L<!--startfragment -->og4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如<!--startfragment --> console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。
3、Log4j的配置文件
虽然可以不用配置文件,而在程序中实现配置,但这种方法在如今的系统开发中显然是不可取的,能采用配置文件的地方一定一定要用配置文件。Log4j支持两种格式的配置文件:XML格式和Java的property格式,本人更喜欢后者,首先看一个简单的例子吧,如下:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize= 100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
首先,是设置root,格式为<!--startfragment --> log4j.rootLogger=[level],appenderName, ...,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,<!--startfragment -->appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 配置日志信息输出目的地Appender,其语法为
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似: <chsdate year="2002" month="10" day="18" islunardate="False" isrocdate="False">2002年10月18日 </chsdate>22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
4、Log4j在程序中的使用
要在自己的程序中使用Log4j,首先需要将commons-logging.jar和logging-log4j-1.2.9.jar导入到构建路径中。然后再将log4j.properties放到src根目录下。这样就可以在程序中使用log4j了。在类中使用log4j, 首先声明一个静态变量 Logger logger=Logger.getLog("classname");现在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一个小例子:
import com.foo.Bar;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class.getName());
public static void main(String[] args) {
// BasicConfigurator replaced with PropertyConfigurator.
PropertyConfigurator.configure(args[0]);
logger.info("Entering application.");
Bar bar = new Bar();
bar.doIt();
logger.info("Exiting application.");
}
}
发表评论
-
Ant
2007-07-16 11:42 567ant使用教程 Ant是什么? Ant是一种基 ... -
Log4j(2)
2007-07-16 17:07 604Log4j由三个重要的组件 ... -
java基础
2007-07-18 16:50 678第一,谈谈final, finally, finalize的区 ... -
spring hibernate struts异常解决办法
2007-07-20 09:56 5611。Caused by: java.lang.NoClassD ... -
eclipse3.2.0+myeclipse5.5.1开发struts1.2+spring2.0+hibernate3.1
2007-07-20 13:37 6661.首先新建一个Web工程2.添加Struts框架1.2版本3 ... -
Java.io包
2007-08-14 10:23 5961.1 以字节为导向的stream 以字节为导向的str ... -
struts中javascript验证登陆
2007-08-21 10:57 556<script type="text/java ... -
Validator验证框架使用教程
2007-08-21 16:05 592Terry原创,转载请 ... -
Struts:与Tiles框架的第一次亲密接触
2007-08-22 10:37 9061.在你的struts配置文件struts-config.x ... -
用过滤器filter解决乱码
2007-09-25 10:36 829当在做程序的是你也许会遇到一些很让你恼火的乱码问题 ... -
简单工厂模式与工厂方法模式的比较
2008-03-31 09:20 585在OO设计领域,我们知 ... -
简单工厂模式,工厂方法模式和抽象工厂模式的区别
2008-04-01 11:37 569我记得看的阎宏发表在天极网上的文章上举的例子挺好的,他以一个后 ... -
JAVA中获取年月日
2008-04-22 14:48 3348Java 语言提供了许多处理日期的工具。其中一些工具在其他语言 ... -
jsp内置對象
2008-04-27 23:00 571一般来说,我们在使用Struts时,如果要在JSP隐式的传 ... -
spring+javamail
2008-10-08 19:02 6321.首先必须要有spring.jar, mail.jar, c ... -
Spring对IBatis的支持
2008-10-09 15:06 624Spring对IBatis提供了完善的内建支持。使用Sprin ... -
spring+ibatis实例
2008-10-09 16:18 2725首先需要以下这些jar包:commons-dbcp.jar, ... -
jboss虚拟镜像自动部署
2008-12-25 11:04 7401.修改C:\jboss-4.0.5.GA\server\de ... -
Spring配置初始化ApplicationContext
2008-12-30 11:36 5861. 在struts-config.xml里,以插件的形式 ... -
写自定义标签时标记attribute里rtexprvalue的用法
2008-12-31 14:39 491其实以前也有写过自定义标签, 但是没有注意到过<rtex ...
相关推荐
Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中存在的某些体系结构...
1. **添加依赖**:首先,在`pom.xml`文件中,添加Log4j的依赖。 ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-log4j ``` 2. **配置文件**:创建`log4j.properties`或`log4j.xml`...
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...
相较于Log4j 1.x,Log4j 2不仅在性能上有所增强,而且在用户体验和安全性上都有显著改进。 2. **版本2.15.0-rc2的更新**: - **安全补丁**:此版本主要针对CVE-2021-44228的安全漏洞进行了修复,这是一个非常严重...
1. Log4j 1.2.6:这是Log4j的一个较早版本,提供了基本的日志记录功能,包括定义不同级别的日志(如DEBUG、INFO、WARN、ERROR和FATAL),以及通过配置文件自定义日志输出格式和目的地(如控制台、文件、SMTP等)。...
Log4j-1.2.17是Log4j 1.x系列的一个稳定版本,尽管后续发布了Log4j 2.x,但1.2版仍被许多遗留系统和项目广泛使用。这个版本修复了一些已知的bug,提升了性能和稳定性,同时也兼容了当时的Java环境。 总结,Log4j...
1. **log4j-1.2.17.jar**: 这是Log4j的主要库文件,包含了所有Log4j的类和接口。通过这个库,开发者可以方便地在代码中插入日志语句,记录程序运行时的信息、警告、错误等。 2. **commons-logging-1.2.jar**: 这是...
Log4j2相比Log4j 1.x有许多改进,包括性能提升、更丰富的配置选项、异步日志记录支持以及动态日志配置等。 在Tomcat 9中配置SLF4J和Log4j2,你需要以下步骤: 1. **添加依赖**:确保你的项目中包含SLF4J和Log4j2的...
最后,`log4j-core-2.0-rc1.jar`是Log4j 2.x的实现库,它实现了`log4j-api-2.0-rc1.jar`中定义的接口,包含具体的日志处理逻辑和各种Appender、Filter和Layout的实现。这个库使得开发者可以实际使用Log4j 2的功能,...
Log4j 2是一个继Log4j 1.x之后的全面升级,它不仅提高了性能,还引入了许多新的功能和设计改进。Log4j 2的主要目标是减少日志带来的性能开销,并提供动态日志配置,使得在运行时可以轻松地调整日志级别。 在日志...
Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...
例如,SLF4J 1.x对应Log4j 1.x,而SLF4J 2.x对应Log4j 2.x。 7. 日志管理和优化: 根据项目需求,可以通过调整配置来控制日志级别,防止过多的日志输出影响性能。同时,可以设置日志文件大小限制、回滚策略等,...
- **Hierarchy类**:在Log4j 1.x中,Hierachy类负责管理Logger的层次结构,而在Log4j 2.x中,这部分功能由LoggerContext实现。 - **Layout接口和其实现**:例如PatternLayout,实现日志信息的格式化输出。 - **...
Log4j2是Log4j的升级版本,它基于LMAX Disruptor的异步日志在多线程环境下性能远远优于Log4j 1.x和logback。 本文将详细介绍如何使用Slf4j集成Log4j2构建项目日志系统的完美解决方案。 背景: 随着项目的发展,对...
Log4j 2相比其前身Log4j 1.x,提供了许多改进和新特性,使得它在性能、可配置性、可扩展性和稳定性方面有了显著提升。在本文中,我们将深入探讨Log4j 2的核心概念和主要功能。 **1. 性能优化** Log4j 2通过引入新的...
Log4j是Apache的一个开源项目,全称为Log4j for Java,它是一个基于Java的日志记录库。该项目始于1996年的一个名为...在log4j2.x中,尽管还保留了与Log4j 1.x的兼容性,但建议开发者在可能的情况下使用Log4j2的新特性。
Log4j 2相比其前身Log4j 1.x,在性能、可配置性和安全性方面都有显著提升。 **Log4j 2.15.0 特性** 1. **配置灵活性**:Log4j 2提供了XML、JSON、YAML和Groovy等多种配置格式,允许用户根据项目需求定制日志输出。 ...
比如,`log4j.appender.Console.layout=org.apache.log4j.PatternLayout`,并设置`log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n`,这样日志会显示时间、级别、类名、行号和...
Java Log4j 1,2 所需Jar包,一个完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需 要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是使用 System.out.println()无法完成的。 ...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...