`
陈亮宇
  • 浏览: 12273 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论
阅读更多

<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

log4j

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制 日志 信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个 配置文件 来灵活地进行配置,而不需要修改应用的代码。

Apache是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。

    apache的主要属性:

    1,支持 http1.1 标准

    2.支持多种脚本语言如 perl php jsp

    3.支持多种用户认证机制,如 .htaccess 文件 ,mysql 数据库, openldap 目录等。

    4.支持虚拟主机

    5.支持访问控制。

    6.支持重定向和重写规则

    7.支持 ssl

 

 

目录

介绍  

Log4j配置  

1.  第一步  

2.  第二步  

3.  第三步  

4.  第四步

Log4j说明  

log4j详解  

1.  定义配置文件  

2.  格式化日志信息  

3.  在代码中使用Log4j

log4j与J2EE的结合

介绍  

Log4j配置  

1.  第一步  

2.  第二步  

3.  第三步  

4.  第四步

Log4j说明  

log4j详解  

1.  定义配置文件  

2.  格式化日志信息  

3.  在代码中使用Log4j

log4j与J2EE的结合

展开

编辑本段 介绍

  在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的 日志 操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。 

  官方站点:http://logging.apache.org/log4j/ 

  此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言 分布式系统 得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。 

  说明:下面分为三部分, 

  第一部分讲解如何配置log4j; 

  第二部分为对log4j.properties 配置文件 中的各个属性的讲解; 

  第三部分为对log4j的详细讲解。 

  如果只想配置上log4j,那么只需要看前两个部分就可以,如果想对log4j深入了解,则还需看第三部分。 

  使用的license: Apache License V2.0 (www.apache.org/licenses/LICENSE-2.0) 

编辑本段 Log4j配置

第一步

  加入log4j-1.2.8.jar到lib下。 

第二步

  在CLASSPATH下建立log4j.properties。内容如下: 

  1 log4j.rootCategory=INFO, stdout , R 

  2 

  3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 

  4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

  5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 

  6 

  7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 

  8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log 

  9 log4j.appender.R.layout=org.apache.log4j.PatternLayout 

  10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 

  11 

  12 log4j.logger.com.neusoft=DEBUG 

  13 log4j.logger.com.opensymphony.oscache=ERROR 

  14 log4j.logger.net.sf.navigator=ERROR 

  15 log4j.logger.org.apache.commons=ERROR 

  16 log4j.logger.org.apache.struts=WARN 

  17 log4j.logger.org.displaytag=ERROR 

  18 log4j.logger.org.springframework=DEBUG 

  19 log4j.logger.com.ibatis.db=WARN 

  20 log4j.logger.org.apache.velocity=FATAL 

  21 

  22 log4j.logger.com.canoo.webtest=WARN 

  23 

  24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 

  25 log4j.logger.org.hibernate=DEBUG 

  26 log4j.logger.org.logicalcobwebs=WARN 

第三步

  相应的修改其中属性,修改之前就必须知道这些都是干什么的,在第二部分讲解。 

第四步

  在要输出日志的类中加入相关语句: 

  定义属性:protected final Log log = LogFactory.getLog(getClass()); 

  在相应的方法中: 

  if (log.isDebugEnabled()){ 

  log.debug(“System …..”); 

  } 

编辑本段 Log4j说明

   log4j.rootCategory=INFO, stdout , R 

  此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。 

   log4j.appender.stdout=org.apache.log4j.ConsoleAppender 

  此句为定义名为stdout的输出端是哪种类型,可以是 

  org.apache.log4j.ConsoleAppender(控制台), 

  org.apache.log4j.FileAppender(文件), 

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), 

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 

  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

  具体讲解可参照第三部分定义配置文件中的Appender。 

   4  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

  此句为定义名为stdout的输出端的layout是哪种类型,可以是 

  org.apache.log4j.HTMLLayout(以HTML表格形式布局), 

  org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 

  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 

  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

  具体讲解可参照第三部分定义配置文件中的Layout。 

   5  log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n 

  如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下: 

  %m 输出代码中指定的消息 

  %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 

  %r 输出自应用启动到输出该log信息耗费的毫秒数 

  %c 输出所属的类目,通常就是所在类的全名 

  %t 输出产生该日志事件的线程名 

  %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 

  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 

  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 

  [QC]是log信息的开头,可以为任意字符,一般为项目简称。 

  输出的信息 

  [TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy' 

  具体讲解可参照第三部分定义配置文件中的格式化日志信息。 

   7  log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 

  此句与第3行一样。定义名为R的输出端的类型为每天产生一个日志文件。 

   8  log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log 

  此句为定义名为R的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log可以自行修改。 

   9  log4j.appender.R.layout=org.apache.log4j.PatternLayout 

  与第4行相同。 

   10  log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 

  与第5行相同。 

   12  log4j.logger.com. neusoft =DEBUG 

  指定com.neusoft包下的所有类的等级为DEBUG。 

  可以把com.neusoft改为自己项目所用的包名。 

   13  log4j.logger.com.opensymphony.oscache=ERROR 

   14  log4j.logger.net.sf.navigator=ERROR 

  这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句。 

   15  log4j.logger.org.apache.commons=ERROR 

   16  log4j.logger.org.apache.struts=WARN 

  这两句是struts的包。 

   17  log4j.logger.org.displaytag=ERROR 

  这句是displaytag的包。(QC问题列表页面所用) 

   18  log4j.logger.org.springframework=DEBUG 

  此句为Spring的包。 

   24  log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 

   25  log4j.logger.org.hibernate=DEBUG 

  此两句是hibernate的包。 

  以上这些包的设置可根据项目的实际情况而自行定制。 

编辑本段 log4j详解

定义配置文件

  Log4j支持两种配置 文件格式 ,一种是XML格式的文件,一种是Java特性文件log4j.properties(键=值)。下面将介绍使用log4j.properties文件作为配置文件的方法: 

   ①、配置根Logger  

  Logger 负责处理日志记录的大部分操作。 

  其语法为: 

  log4j.rootLogger = [ level ] , appenderName, appenderName, … 

  其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到 应用程序 中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 

   ②、配置日志信息输出目的地 Appender  

  Appender 负责控制日志记录操作的输出。 

  其语法为: 

  log4j.appender.appenderName = fully.qualified.name.of.appender.class 

  log4j.appender.appenderName.option1 = value1 

  … 

  log4j.appender.appenderName.optionN = valueN 

  这里的appenderName为在①里定义的,可任意起名。 

  其中,Log4j提供的appender有以下几种: 

  org.apache.log4j.ConsoleAppender(控制台), 

  org.apache.log4j.FileAppender(文件), 

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), 

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个 备份文件 。 

  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

  例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender 

  定义一个名为stdout的输出目的地,ConsoleAppender为控制台。 

   ③、配置日志信息的格式(布局)Layout  

  Layout 负责格式化Appender的输出。 

  其语法为: 

  log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 

  log4j.appender.appenderName.layout.option1 = value1 

  … 

  log4j.appender.appenderName.layout.optionN = 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平台为“rn”,Unix平台为“n” 

  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 

  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 

在代码中使用Log4j

  我们在需要输出日志信息的类中做如下的三个工作: 

  1、导入所有需的commongs-logging类: 

  import org.apache.commons.logging.Log; 

  import org.apache.commons.logging.LogFactory; 

  2、在自己的类中定义一个org.apache.commons.logging.Log类的私有静态类成员: 

  private final Log log = LogFactory.getLog(getClass()); 

  LogFactory.getLog()方法的参数使用的是当前类的class。 

  3、使用org.apache.commons.logging.Log类的成员方法输出日志信息: 

  if (log.isDebugEnabled()){ 

  log.debug("111"); 

  } 

  if (log.isInfoEnabled()){ 

  log.info("222"); 

  } 

  if (log.isWarnEnabled()){ 

  log.warn("333"); 

  } 

  if (log.isErrorEnabled()){ 

  log.error("444"); 

  } 

  if (log.isFatalEnabled()){ 

  log.fatal("555") 

  } 

  2.3 如何应用记录器的层次 

  2.3.1 如果定义及获取不同层次的记录器 

letter-spacing: 0.4pt; font-size: 12pt; font-fami

分享到:
评论

相关推荐

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    Log4j2学习用到的jar包及apache-log4j-2.19.0-bin.zip

    分别有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...

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    Log4j2简介及与Log4j效率对比

    ### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中...

    log4j.jar各个版本

    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-...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用Log4j的强大功能,如自定义输出格式和多种输出目的地。通过适当的配置和测试,我们可以确保日志系统按照预期...

    log4j-core-2.15.0.jar log4j-2.15.0-rc2

    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....

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    此次提及的`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模块...

    logging-log4j2-log4j-2.15.0-rc2.zip

    《深入理解Log4j 2.15.0-rc2:日志处理的关键技术解析》 Log4j,作为Java领域广泛使用的日志记录框架,一直以来都是开发者们的重要工具。这次我们关注的是其最新版本——logging-log4j2-log4j-2.15.0-rc2。这个版本...

    log4j.properties(完整版) log4j.properties(精简版)

    **日志框架Log4j详解** 在Java开发中,日志记录是一项不可或缺的功能,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,并为后期维护提供重要信息。Log4j是Apache组织开发的一个强大的、灵活的日志记录框架...

    log4j-2.18.0

    《log4j-2.18.0:修复重大安全漏洞的紧急更新》 在IT领域,安全性始终是首要关注的问题。近期,一个名为“log4j2”的严重安全漏洞引发了广泛关注,它影响了所有log4j2版本,从2.0开始直到2.18.0版本之前。这个漏洞...

    log4j-api-2.15.0.jar log4j-2.15.0-rc2

    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-2.17.1.jar和log4j-core-2.17.1.jar

    《深入理解log4j-api-2.17.1.jar与log4j-core-2.17.1.jar》 在Java开发中,日志管理是不可或缺的一部分,它帮助我们跟踪程序运行状态、定位错误和调试问题。Log4j作为一款广泛使用的日志框架,历经多次迭代,现在...

    logging-log4j2-log4j-2.16.0-rc1.zip

    总的来说,"logging-log4j2-log4j-2.16.0-rc1.zip"的发布是Log4j团队对"Log4Shell"漏洞的有力回应,通过禁用可能导致安全问题的功能,提高了整体的安全标准。这一事件提醒我们,安全无小事,及时的更新和维护是保障...

    log4j示例项目

    这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...

    log4j-API-最新稳定版本log4j-1.2.17

    标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...

    apache-log4j-2.17.0 核心jar包

    Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...

Global site tag (gtag.js) - Google Analytics