`
piaochunzhi
  • 浏览: 44152 次
文章分类
社区版块
存档分类
最新评论
阅读更多
Log4j文档



Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。



一、       定义配置文件

  Log4j支持两种配置文件格式,一种是Java特性文件(properties格式的属性文件),一种是XML格式的文件。



1.    以Java特性文件(properties格式的属性文件)做为配置文件

  Java特性文件也位于WEB-INF/classes目录下,下面是一个Java特性文件(properties格式的属性文件)的例子:





# For JBoss: Avoid to setup log4j outside $JBOSS_HOME/server/default/deploy/log4j.xml

# For all other servers: Comment out the Log4J listener in web.xml too

 

log4j.configuration=log4j.properties

 

log4j.rootCategory=info, stdout, logfile

 

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

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

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=D:/temp/SpringMVC.log

log4j.appender.logfile.MaxFileSize=512KB

# Keep three backup files

log4j.appender.logfile.MaxBackupIndex=3

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

# Pattern to output: date priority [category] - <message>line_separator

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n

 

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

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

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

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

#log4j.logger.org.displaytag=ERROR

log4j.logger.org.springframework=WARN

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





  当Tomcat服务器启动时自动加载.properties配置文件。

其中,

log4j.configuration=log4j.properties 是指定配置文件的名字。

log4j.rootCategory= [ level ] , appenderName, appenderName, … 是配置根Logger。


level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,默认日志级别是ERROR;appenderName就是指定Appender组件,确定日志输出目的地。如上例:log4j.rootCategory=info, stdout, logfile 配置根Logger的级别是INFO,日志输出的目的地是stdout, logfile。




    log4j.appender. appenderName =org.apache.log4j.ConsoleAppender是配置日志信息输出目的地Appender。


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=org.apache.log4j.PatternLayout 配置日志信息的格式(布局)


   Log4j提供的layout有以下几种:
  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)




   log4j.appender. appenderName.layout.ConversionPattern=%d %p [%c] - <%m>%n  是设置打印格式格式化日志信息。


打印参数如下:

%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)




  如果log4j.appender. appenderName 属性配置的日志输出目的地是一个文件是,还有以下属性:


    log4j.appender. appenderName.File=D:/temp/SpringMVC.log  配置日志文件的名称。即存放日志的文件。

    log4j.appender. appenderName.MaxFileSize=512KB  配置日志文件的大小,最大可以设置为10M。

    log4j.appender. appenderName.MaxBackupIndex=3  配置可有日志文件的个数。




  Log4j.logger<.logger.name>= level  指定Logger.name这个记录器的级别。即,logger只输出这个级别或高出这个级别的日志。如: 


log4j.logger.org.springframework=WARN  是配置Logger只输出关于org.springframework的WARN级别的日志和ERROR和FATAL级别的日志。

    log4j.logger.org.displaytag=ERROR  是配置Logger只输出关于displaytag的ERROR 和FATAL级别的日志。




  如果将日志以邮件的形式发送出去时得有以下属性:


log4j.appender.mail=org.apache.log4j.net.SMTPAppender  配置日志输出目的地是电子邮箱

log4j.appender.mail.To= lmbussiness@hotmail.com        设置日志将要输出到的电子邮箱

log4j.appender.mail.From=localhost@raibledesignes.com  设置发送日志信息的电子邮箱

log4j.appender.mail.SMTPHost=localhost             设置运行SMTP守护程序的主机的IP地址名称

log4j.appender.mail.Threshold=ERROR                设置记录日志的最低级别

log4j.appender.mail.BufferSize=1                   设置写邮件的缓存大小

log4j.appender.mail.Subject=[localhost]dlhitech Application Error  设置电子邮件标题


     如果将日志输出到数据库日志表时有以下属性:


log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender    配置日志输出目的地是数据库
log4j.appender.DATABASE.URL=jdbc:oracle:thin:@192.168.1.10:1521:SCSORA   配置连接数据库的url
log4j.appender.DATABASE.driver=oracle.jdbc.drivers.OracleDrivers        配置连接数据库的驱动器
log4j.appender.DATABASE.user=newsinfo                                  配置连接数据库的用户名
log4j.appender.DATABASE.password=newsinfo                             配置连接数据库的密码
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')                                    设置插入语句
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout     配置日志信息的格式(布局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n                                                       设置打印格式格式化日志信息。






2.以XML格式的文件作为配置文件

  下面是一个XML格式的文件作为配置文件的例子:

  

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

        

   <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">

     <param name="threshold" value="error"/>

     <layout class="org.apache.log4j. PatternLayout">

       <param name="Conversion" value="%d{(yyyy年MM月dd日-HH時mm分ss秒)} %p [%c] - <%m>%n "/>
</layout>

   </appender>

   

   <appender name="rollingFile.log" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value=" D:/temp/SpringMVC.log " />
<param name="threshold" value="info"/>
     <param name="Append" value="false" />
     <param name="MaxBackupIndex" value="2" />
     <param name="MaxFileSize" value="1024" />
     <layout class="org.apache.log4j.PatternLayout" >
       <param name=" ConversionPattern " value="%d [%t] %p - %m%n" />
     </layout>
    <!-- 实现过滤功能,用这个标签,当往这个指定文件记录日志时只记录指定级别的日志,别的不记录 。
Filter标签只能在xml配置文件好用,在.properties属性文件中不好用-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
      <param name="LevelMin"      value="ERROR"/>
      <param name="LevelMax"      value="ERROR"/>
      <param name="acceptOnMatch" value="TRUE"/>
    </filter>
   </appender>
<!—封装apache ,这样,可以在java程序中的

Category cat2 = Category.getInstance("your.category.name"); 来进行输出日志-->

<category name="org.apache">      --设置封装的名称

<priority value="info" />     --输出指定级别的日志

<appender-ref ref="aplog"/>   --设置输出的目的地

</category>

<root>

     <level value ="debug" />

     <appender-ref ref="ConsoleAppender"/>

<appender-ref ref=" rollingFile.log "/>  <!--  经过过滤只记录error级别的日志  -->

   </root>

</log4j:configuration>
 





二.调用Log4j来输出日志

  通过访问通用日志接口和在java程序手动打开配置文件都可以进行日志的输出。其中,通过访问通用日志接口来指定日志器时,Log4j的配置文件只能是java特定文件(.properties属性文件)。



1.通过访问通用日志接口来输出日志

  当Tomcat服务器启动时,通用日志接口从名为“commons-logging.properties”的属性文件中获取实现日志接口日志器信息,这个文件位于WEB-INF/classes目录下。“commons-logging.properties”属性文件的内容:

 




org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog




  当Tomcat服务器运行时,通用日志接口会检索commons-logging.properties文件,并且实例化由“org.apache.commons.logging.Log”属性指定的日志实现例。上面给的日志器是Log4J日志器。

  Tomcat服务器会自动加载.properties配置文件。

  调用Log4j输出日志 如下例:

  import org.apache.commons.logging.Log;

   

public class Test{

      public static void main(args[] String){

    Log logger = LogFactory.getLog(“test”);

    logger.info("开始操作");

    int a = 5;

    int b = 6;

    System.out.println(a+b);

    logger.info("操作完毕");

}

}
 



2.手动打开配置文件输出日志

  程序员用手动打开配置文件来输出日志时,得先打开配置文件然后才能进行输出日志操作。由于Log4J的配置文件可以是java特性文件(.properties属性文件)和.xml文件,所以打开配置文件的方式就不相同。当配置文件是java特性文件(.properties属性文件)时,打开配置文件的方法是:



PropertyConfigurator.configure ( String configFilename);




当配置文件是.xml文件时,打开配置文件的方法是:



DOMConfigurator.configure ( String filename );




当打开配置文件后,配置文件就一直打开着,所以配置文件就打开一遍就可以了。

  打开配置文件后,构造Logger对象然后输出日志信息,以配置文件是.xml文件为例,输出信息实例如下:



import org.apache.log4j.Logger;

import org.apache.log4j.xml.DOMConfigurator;   

public class Test{

      public static void main(args[] String){

          DOMConfigurator.configure ( String filename );

          Logger logger = Logger.getRootLogger();

          logger.info("开始操作");

          int a = 5;

          int b = 6;

         System.out.println(a+b);

         logger.info("操作完毕");

}

}
 




2.不通过配置文件手动输出日志

  使用Log4J来输出日志不一定非得通过配置文件来输出日志,也可以不通过配置文件来输出日志,手动在程序中创建Appender、Layout等对象,只不过这样做会在java程序用留下很大的代码量。下面是一个不通过配置文件手动输出日志的实例,程序实现了PatternLayout和FileAppender:

     import org.apache.log4j.Level;

import org.apache.log4j.Logger;

import org.apache.log4j.SimpleLayout;

import org.apache.log4j.FileAppender;

public class simpandfile {

         static Logger logger = Logger.getLogger(simpandfile.class);

         public static void main(String args[]) {

           String pattern =  "Milliseconds since program start: %r %n";

                   pattern += "Classname of caller: %C %n";

                   pattern += "Date in ISO8601 format: %d{ISO8601} %n";

                   pattern += "Location of log event: %l %n";

                   pattern += "Message: %m %n %n"; 

           PatternLayout layout = new PatternLayout(pattern);

           FileAppender appender = null;

             try {

                 appender = new FileAppender(layout,"output1.txt",false);

              } catch(Exception e) {}

              logger.addAppender(appender);

              logger.setLevel((Level) Level.DEBUG);

              logger.debug("Here is some DEBUG");

              logger.info("Here is some INFO");

              logger.warn("Here is some WARN");

              logger.error("Here is some ERROR");

              logger.fatal("Here is some FATAL");

        }

}
 
分享到:
评论

相关推荐

    Log4J文档

    使用Log4J进行日志操作

    log4j文档及使用

    本文将围绕“log4j文档及使用”这一主题,深入探讨其核心概念、配置方式以及实战应用。 首先,Log4j的核心理念是提供一种灵活的日志记录机制,允许开发者控制日志信息的级别(如DEBUG、INFO、WARN、ERROR和FATAL)...

    Log4J文档.doc

    Log4J文档.doc Log4J文档.doc Log4J文档.doc Log4J文档.doc

    log4j文档帮助

    **日志管理在Java开发中的重要性** 在Java编程中,日志管理是不可或缺的一部分,它可以帮助开发者跟踪程序运行状态,定位错误...通过阅读“log4j文档帮助”,开发者可以获得更详细的指导,进一步提升日志管理的能力。

    log4j配置文档log4j配置文档

    log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档log4j配置文档

    收藏Log4j文档

    标题“收藏Log4j文档”表明这是一个关于Log4j的日志记录框架的资料集合,Log4j是Java编程语言中最广泛使用的日志库之一,主要用于记录应用程序运行过程中的各种事件和异常信息。这个压缩包可能包含了Log4j的详细使用...

    Log4J详细文档.doc

    Log4J(Log for java)是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台、文件、CUI组件、NT的事件记录器;还可以控制每一条日志输出格式。此外,通过...

    (原创连载)LOG4J文档翻译

    【LOG4J文档翻译】是针对Java日志框架Log4j的一份中文翻译教程,旨在帮助中文用户更好地理解和使用这个强大的日志记录工具。Log4j是Apache软件基金会的一个开源项目,广泛应用于Java应用程序中,它提供了灵活的日志...

    LOG4J文档的描述和XML配置文件

    **LOG4J文档详解与XML配置文件指南** LOG4J是Apache软件基金会开发的一个Java日志框架,它为应用程序提供了一种灵活的日志记录机制。这个框架被广泛应用于各种Java项目中,因为它允许开发者控制日志输出的级别、...

    log4j-api-2.17.1-API文档-中文版.zip

    赠送原API文档:log4j-api-2.17.1-javadoc.jar; 赠送源代码:log4j-api-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.17.1.pom; 包含翻译后的API文档:log4j-api-2.17.1-javadoc-API文档-中文(简体)...

    log4j帮助文档及实例

    本文将深入探讨Log4j的帮助文档及实例,帮助你更好地理解和应用Log4j。** **一、Log4j简介** Log4j是一个开源的日志记录工具,最初由Ceki Gülcü设计。它的主要目标是为Java应用程序提供灵活、高效和可配置的日志...

    log4j-to-slf4j-2.17.1-API文档-中文版.zip

    赠送原API文档:log4j-to-slf4j-2.17.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.17.1.pom; 包含翻译后的API文档:log4j-to-slf4j-2.17.1-javadoc...

    log4j-api-2.12.1-API文档-中文版.zip

    赠送原API文档:log4j-api-2.12.1-javadoc.jar; 赠送源代码:log4j-api-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.12.1.pom; 包含翻译后的API文档:log4j-api-2.12.1-javadoc-API文档-中文(简体)...

    log4j-over-slf4j-1.7.33-API文档-中文版.zip

    赠送原API文档:log4j-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:log4j-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:log4j-over-slf4j-1.7.33.pom; 包含翻译后的API文档:log4j-over-slf4j-1.7.33...

    log4j和log4j2日志应用文档.docx

    log4j和log4j2日志应用文档 Log4j是一种广泛使用的Java日志框架,提供了灵活的日志记录和管理机制。本文档将详细介绍Log4j和Log4j2的日志应用,包括日志使用和要点相关内容介绍。 配置文件解析 Log4j配置文件的...

    log4j-to-slf4j-2.12.1-API文档-中文版.zip

    赠送原API文档:log4j-to-slf4j-2.12.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.12.1.pom; 包含翻译后的API文档:log4j-to-slf4j-2.12.1-javadoc...

    Log4j日志文档和Log4j包

    Log4j的文档和包提供了全面的工具和配置选项,使得开发者可以自定义日志输出的级别、格式、目标和存储方式。 1. **日志级别**:Log4j支持多种日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL。这些级别允许开发者...

    log4j-slf4j-impl-2.17.1-API文档-中英对照版.zip

    赠送原API文档:log4j-slf4j-impl-2.17.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.17.1.pom; 包含翻译后的API文档:log4j-slf4j-impl-2.17.1...

    log4j-slf4j-impl-2.12.1-API文档-中英对照版.zip

    赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; 包含翻译后的API文档:log4j-slf4j-impl-2.12.1...

Global site tag (gtag.js) - Google Analytics