`
ssxxjjii
  • 浏览: 950316 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java日志处理组件log4j--log4j.xml配置详解

 
阅读更多

<!-- log4j 系统日志-->
  注:本资料通过网络查找然后整理而成

首先要对配置文件的各个参数进行说明,这样才能合理的进行配置。

参数意义说明:

配置根Logger

[html] view plaincopy
  1. 其语法为:  
  2.     log4j.rootLogger = [ level ] , appenderName1, appenderName2, …  
  3. level: 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或  
  4. 者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。  
  5. appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。  
  6.         例如:log4j.rootLogger=info,A1,B2,C3  

 

输出级别的种类

[html] view plaincopy
  1. OFF 、FATAL 、ERROR、WARN、INFO、DEBUG、TRACE 、ALL  
  2.  OFF 为最高等级 关闭了日志信息  
  3.  FATAL  为可能导致应用中止的严重事件错误  
  4.  ERROR 为严重错误 主要是程序的错误  
  5.  WARN 为一般警告,比如session丢失  
  6.  INFO 为一般要显示的信息,比如登录登出  
  7.  DEBUG 为程序的调试信息  
  8.  TRACE 为比DEBUG更细粒度的事件信息  
  9.  ALL 为最低等级,将打开所有级别的日志  

 

配置日志信息输出目的地

[html] view plaincopy
  1. log4j.appender.appenderName = fully.qualified.name.of.appender.class  
  2.  1.org.apache.log4j.ConsoleAppender(控制台)  
  3.  2.org.apache.log4j.FileAppender(文件)  
  4.  3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)  
  5.  4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)  
  6.  5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)  

 

配置日志信息的格式

[html] view plaincopy
  1. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  
  2.  1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
  3.  2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  
  4.  3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
  5.  4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)  

 

 

 

[html] view plaincopy
  1. <strong>控制台选项</strong>  
  2. Threshold=DEBUG:指定日志消息的输出最低层次。  
  3.  ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  4.  Target=System.err:默认情况下是:System.out,指定输出控制台  
  5.   
  6.  <strong>FileAppender 选项</strong>  
  7.  Threshold=DEBUF:指定日志消息的输出最低层次。  
  8.  ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  9.  File=mylog.txt:指定消息输出到mylog.txt文件。  
  10.  Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。  
  11.   
  12.  <strong>RollingFileAppender 选项</strong>  
  13.  Threshold=DEBUG:指定日志消息的输出最低层次。  
  14.  ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  15.  File=mylog.txt:指定消息输出到mylog.txt文件。  
  16.  Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。  
  17.  MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。  
  18.  MaxBackupIndex=2:指定可以产生的滚动文件的最大数。  
  19.  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n  

 

日志信息格式中几个符号所代表的含义:

[html] view plaincopy
  1. -X号: X信息输出时左对齐;  
  2. %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,  
  3. %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  
  4. %r: 输出自应用启动到输出该log信息耗费的毫秒数  
  5. %c: 输出日志信息所属的类目,通常就是所在类的全名  
  6. %t: 输出产生该日志事件的线程名  
  7. %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)  
  8. %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。  
  9. %%: 输出一个"%"字符  
  10. %F: 输出日志消息产生时所在的文件名称  
  11. %L: 输出代码中的行号  
  12. %m: 输出代码中指定的消息,产生的日志具体信息  
  13. %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行  
  14. 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:  
  15. 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。  
  16. 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。  
  17. 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。  
  18. 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。  

 

log4j.xml配置如下,log4j.xml存放在WEB-INF目录下

[html] view plaincopy
  1. <?xml version="1.0" encoding="GBK" ?>    
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">    
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">      
  4.     <!-- 输出日志到控制台  ConsoleAppender -->   
  5.         <appender name="console"   
  6.         class="org.apache.log4j.ConsoleAppender">  
  7.         <param name="Threshold" value="info"></param>  
  8.         <layout class="org.apache.log4j.TTCCLayout">  
  9.             <param name="ConversionPattern" value="TTCCLayout"></param>  
  10.         </layout>  
  11.     </appender>  
  12.   
  13.     <!-- 输出日志到文件  每天一个文件 -->  
  14.     <appender name="dailyRollingFile"  
  15.         class="org.apache.log4j.DailyRollingFileAppender">  
  16.         <param name="Threshold" value="info"></param>  
  17.         <param name="ImmediateFlush" value="true"></param>  
  18.         <param name="File" value="c:/logs/dailyRollingFile.log"></param>  
  19.         <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>  
  20.         <layout class="org.apache.log4j.PatternLayout">  
  21.             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>  
  22.         </layout>  
  23.     </appender>   
  24.       
  25.     <!-- 输出日志到文件  文件大小到达指定尺寸的时候产生一个新的文件 -->  
  26.     <appender name="railyFile"   
  27.         class="org.apache.log4j.RollingFileAppender">  
  28.         <param name="File" value="c:/logs/railyFile.log"></param>  
  29.         <param name="ImmediateFlush" value="true"/>  
  30.         <param name="Threshold" value="info"></param>  
  31.         <param name="Append" value="true"></param>  
  32.         <param name="MaxFileSize" value="30KB"></param>  
  33.         <param name="MaxBackupIndex" value="100"></param>  
  34.         <layout class="org.apache.log4j.PatternLayout">  
  35.             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>  
  36.         </layout>  
  37.     </appender>  
  38.   
  39.     <!-- 输出日志到文件 -->  
  40.     <appender name="file"  
  41.         class="org.apache.log4j.FileAppender">  
  42.         <param name="File" value="c:/logs/file.log"></param>  
  43.         <param name="Threshold" value="info"></param>  
  44.         <layout class="org.apache.log4j.PatternLayout">  
  45.             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>  
  46.         </layout>  
  47.     </appender>  
  48.   
  49.     <!--   
  50.         定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。  
  51.         如果在railyFile中定义<param name="Threshold" value="info"></param>,那么将会把info以上级别的信息输出  
  52.      -->  
  53.     <root>       
  54.         <priority value="debug" />       
  55.         <appender-ref ref="console" />    
  56.         <appender-ref ref="dailyRollingFile" />    
  57.         <appender-ref ref="railyFile" />    
  58.         <appender-ref ref="file" />    
  59.     </root>         
  60.   
  61. </log4j:configuration>   

 

在web.xml中添加log4j.xml配置

[html] view plaincopy
  1. <!-- log4j 系统日志-->  
  2. <context-param>   
  3.     <param-name>log4jConfigLocation</param-name>   
  4.     <param-value>/WEB-INF/log4j.xml</param-value>   
  5. </context-param>   
  6. <listener>   
  7.     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>   
  8. </listener>  

 

对Logger的简单封装:

BasicConfigurator.configure();默认先读取log4j.xml,如果不存在则再读取log4j.properties.

 

[java] view plaincopy
  1. public class Log4jUtil {  
  2.     private static final String configFile = "log4j.xml";  
  3.       
  4.     static{  
  5.         BasicConfigurator.configure();  
  6.     }  
  7.       
  8.     public Log4jUtil() {  
  9.         super();  
  10.     }  
  11.       
  12.     public static String getConfigFile(){  
  13.         return configFile;  
  14.     }  
  15.       
  16.     public static Logger getLogger(Class clazz){  
  17.         return Logger.getLogger(clazz);  
  18.     }  
  19.       
  20.     public static Logger getLogger(String strClass){  
  21.         return Logger.getLogger(strClass);  
  22.     }  
  23.       
  24.     public static Logger getLogger(String strClass,LoggerFactory loggerFactory){  
  25.         return Logger.getLogger(strClass, loggerFactory);  
  26.     }  
  27.       
  28.       
  29. }  


最后只需在代码中调用即可,格式如下:

 

 

[java] view plaincopy
  1. public class HelloLog4j {  
  2.   
  3.     private static Logger logger = Logger.getLogger(HelloLog4j.class);  
  4.   
  5.     public  String getURL(){  
  6.         logger.info("getURL() ... ");  
  7.         return null;  
  8.     }  
  9. }  


这样log4j就配置成功了。

分享到:
评论

相关推荐

    log4j-1.2.17.jar及配置文件

    配置文件(通常是log4j.properties或log4j.xml)决定了日志记录的行为,包括日志级别、输出目的地、格式等。例如,以下是一个简单的log4j.properties配置示例: ``` # 设置全局日志级别为INFO log4j.rootLogger=...

    log4j-2.7api+core包

    4. **log4j2.xml配置**:`log4j2.xml`是Log4j 2.x的配置文件,定义了日志记录的策略,包括日志级别、Appender(输出目标)、Layout(输出格式)、Filter(过滤规则)等。正确的配置能够确保日志的有效性和安全性,...

    log4j-1.2.15-apidocs.rar

    在Java世界里,日志处理是不可或缺的一部分,而Log4j作为一款经典的日志框架,以其强大的功能和灵活的配置赢得了广大开发者们的青睐。本文将基于"Log4j 1.2.15"的API文档,深入剖析其核心概念、使用方法以及关键组件...

    log4j-1.2.17.jar csdn下载

    总结,Log4j-1.2.17.jar作为Java日志处理的重要工具,具有高度可配置性和灵活性,使得开发者能够方便地管理和分析应用程序的运行情况。无论是在小型项目还是大型分布式系统中,它都扮演着不可或缺的角色。通过熟练...

    log4j-1.2.15.jar

    使用log4j,关键在于配置文件(通常为log4j.properties或log4j.xml)。开发者可以设置不同logger的级别,指定appender及layout,实现日志记录的定制化。例如,你可以让一个logger只记录错误信息,而另一个logger...

    log4j 1.2.17版本jar包

    **日志框架Log4j详解** Log4j是Apache组织提供的一款开源的日志记录框架,广泛应用于Java应用程序中。在1.2.17版本中,Log4j为开发者提供了强大的日志处理能力,帮助他们追踪程序运行时的错误、警告和其他相关信息...

    logging-log4j-1.2.13.zip

    Log4j是Java世界中的一款开源日志组件,它提供了灵活的日志记录功能,包括日志级别控制、日志输出格式定制、日志输出位置选择等。在logging-log4j-1.2.13版本中,我们能够看到它对性能和功能的进一步优化。 二、...

    log4j.jar及log4j.xml

    1. **Logger**: 这是Log4j的基本日志组件,它负责实际的日志记录工作。开发者可以通过创建Logger实例来发送不同级别的日志消息,如DEBUG、INFO、WARN、ERROR和FATAL。 2. **Appender**: Appender是日志消息的目标,...

    log4j-1.2.8.jar

    在使用log4j时,配置文件(通常为`log4j.properties`或`log4j.xml`)扮演着关键角色。它定义了各个logger的行为,包括日志级别、appender的选择和layout的设置。例如,我们可以通过配置指定某个类的日志级别,控制...

    log4j-1.2.16

    Apache Log4j是一款广泛使用的Java日志记录框架,它为开发者提供了一种灵活且强大的日志处理机制,使得在应用程序开发中可以方便地进行日志记录、管理和分析。Log4j的1.2.16版本是在其1.x系列中的一个重要维护版本,...

    log4j-jar包

    **日志框架Log4j详解** 在Java开发中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,并且在生产环境中为问题排查提供重要线索。Log4j是一个广泛使用的开源日志记录框架,由...

    log4j实例,log4j-1.2.9.jar

    **日志框架Log4j详解** Log4j是Apache组织提供的一款开源的日志记录框架,广泛应用于Java开发中。在标题“log4j实例,log4j-1.2.9.jar”中,我们看到的是Log4j的一个具体版本——1.2.9。这个版本虽然相对较旧,但它...

    log4j-jar所需要的全部JAR包

    Log4j是Apache组织提供的一款开源、强大的Java日志处理框架,广泛应用于Java应用系统,提供灵活的日志配置和多种输出格式,便于调试和问题追踪。 **1. Log4j组件** - **Logger**: 日志记录器,它是日志系统的核心...

    log4j.1.2.17

    Log4j的配置文件通常为`log4j.properties`或`log4j.xml`,其中定义了日志的行为。例如: ```properties log4j.rootLogger=ERROR, FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE...

    log4j使用笔记

    log4j 是一个由 Apache 提供的开源日志组件,专为 Java 应用程序设计。它能够帮助开发者轻松记录应用程序运行时的信息,这些信息通常被称为“日志”。通过 log4j,开发人员可以方便地控制日志消息的级别(如 debug、...

    Log4j将System.out搞到log4j中输出四

    在Java程序中,我们通常通过配置Log4j的XML或properties文件来设置这些组件。为了将`System.out.println()`的输出转到Log4j,我们可以创建一个特殊的Appender,它监听标准输出流(System.out)。Log4j提供了一个名为...

    log4j-2.0-alpha2

    **日志框架Log4j 2.0 Alpha2详解** 日志系统在软件开发中扮演着至关重要的角色,它能够帮助开发者追踪程序运行状态,定位错误和异常,从而提高调试效率。Log4j 2.0是Apache软件基金会开发的一个强大且灵活的日志...

Global site tag (gtag.js) - Google Analytics