1、Log4j是什么?
Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: http://jakarta.apache.org/log4j .
2、Log4j的概念
Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 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格式,本人更喜欢后者,首先看一个简单的例子吧,如下:
<ccid_code style="margin: 0px; padding: 0px; word-wrap: break-word;">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,格式为 log4j.rootLogger=[level],appenderName, ……,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 配置日志信息输出目的地Appender,其语法为
<ccid_nobr style="margin: 0px; padding: 0px; word-wrap: break-word;">
<ccid_code style="margin: 0px; padding: 0px; word-wrap: break-word;">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(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局),其语法为:
<ccid_nobr style="margin: 0px; padding: 0px; word-wrap: break-word;">
<ccid_code style="margin: 0px; padding: 0px; word-wrap: break-word;">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},输出类似: 2002年10月18日 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"),看下面一个小例子:
<ccid_code style="margin: 0px; padding: 0px; word-wrap: break-word;">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."); } } |
相关推荐
总结,Log4j作为一个成熟的日志框架,其强大的功能和广泛的社区支持使其在Java开发领域有着不可替代的地位。掌握Log4j的使用和配置,能有效提升开发效率,同时也有助于提高系统的可维护性和稳定性。通过深入学习其...
总结来说,Log4j2.16.0是一个关键的安全更新,解决了Log4j2框架中的“Log4Shell”漏洞。对于使用若依框架或其他依赖Log4j2的项目,升级到这个版本至关重要,可以避免系统遭受恶意攻击。用户需要下载并正确安装这个...
总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用Log4j的强大功能,如自定义输出格式和多种输出目的地。通过适当的配置和测试,我们可以确保日志系统按照预期...
Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
《深入理解Log4j 1.2.15.jar:日志管理的基石》 在IT行业中,日志管理是一项至关重要的任务,它对于系统监控、故障排查以及性能优化起着不可忽视的作用。Log4j作为Java平台上的一个经典日志记录框架,因其强大的...
总结来说,Log4j-1.2.17提供了灵活的日志管理功能,通过配置文件可以定制化日志输出的方式和内容,对于开发、调试和维护Java应用具有极大的帮助。尽管有更新的版本如Log4j2可用,但Log4j 1.x仍然在许多项目中得到...
总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...
总结,Log4j作为Java日志处理的重要工具,其灵活性和强大功能使其在开发和运维工作中占据了重要地位。了解并熟练掌握Log4j的使用,有助于提升开发效率,优化系统的可维护性。然而,随着技术的发展,建议关注更新的...
### Tomcat 下的 Log4j 日志配置详解 在日常的 Web 开发中,日志记录对于调试问题、监控系统状态以及后期维护来说至关重要。在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发...
总结,Log4j-1.2.16作为一款成熟稳定的日志框架,其强大而灵活的功能使得它在Java开发中有着广泛的应用。理解并掌握其核心组件和配置方式,能够帮助开发者更好地利用日志进行问题排查,提升开发效率。在实际应用中,...
总结,log4j2.17.2是应对Log4j2 RCE漏洞的重要更新,通过加强安全配置和限制危险功能,为Java应用程序提供了更坚固的安全屏障。对于依赖Log4j2的系统而言,及时升级至该版本是保障系统安全、防范潜在风险的有效手段...
总结来说,Log4j 1.2.17作为一个成熟的日志框架,提供了一套完整的日志解决方案。正确理解和使用Log4j,不仅能够提升开发效率,还能确保系统的可维护性和稳定性。对于初学者而言,掌握其基本原理和配置技巧,是成为...
总结来说,Log4j作为一个强大的日志框架,其强大的功能和高度可定制性使得它在Java项目中占据着重要地位。正确理解和使用log4j-1.2.16.jar,不仅可以提升开发效率,还能为项目的稳定性和维护性提供有力保障。通过...
总结,Log4j-1.2.17.jar作为一款强大的日志工具,通过灵活的配置和丰富的API,为Java开发者提供了强大的日志管理能力。正确理解和运用Log4j,能有效提升开发效率,便于问题排查,是每个Java程序员必备的技能之一。
总结,Log4j提供了一种灵活的方式来管理和组织日志,使其能够按功能模块保存,这对于大型项目来说尤其重要。通过正确配置,不仅可以方便地追踪和分析问题,还能优化系统性能,确保日志系统在不影响业务运行的前提下...
### Log4J完整说明与配置解析 #### 一、Log4J简介 Log4J是Apache的一个开源项目,用于提供灵活的日志记录功能。通过它,开发者能够控制日志信息的输出级别、输出目的地(控制台、文件等)、格式化方式等。本文将...
《log4j-1.2.17.jar及其配置文件详解》 在IT行业中,日志记录是一项至关重要的任务,它能帮助开发者追踪程序运行状况、定位错误和调试问题。Log4j,作为Apache软件基金会的一个开源项目,是Java平台上广泛使用的...
Log4j 使用总结 Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以...
**Log4j2漏洞检测工具详解** 在当前的IT环境中,安全问题日益凸显,特别是针对开源组件的安全漏洞。Log4j2,一个广泛使用的Java日志框架,最近曝出的重大安全漏洞(CVE-2021-44228,被称为Log4Shell)引起了全球的...
总结来说,Log4j-1.2.4是Log4j的一个经典版本,虽然功能可能没有最新版本强大,但在许多项目中仍然被广泛使用,尤其对于那些不追求最新特性的稳定项目。了解和掌握它的使用方法,可以帮助我们更好地管理和调试Java...