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

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

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

参数意义说明:

配置根Logger

[html]  view plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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就配置成功了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值