`
xuxu366
  • 浏览: 11431 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Log4J详细使用例程

阅读更多

log4j下载:http://logging.apache.org/site/binindex.cgi

 

1.Level:日志级别

Level.ALL < Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR < Level.FATAL < Level.OFF

 

2.配置文件 Java properties格式

log4jconfig.properties例子

  1. #定义了两个输出端A1,A2       
  2. log4j.rootLogger=INFO,A1,A2       
  3.       
  4. #定义A1输出到控制台       
  5. log4j.appender.A1=org.apache.log4j.ConsoleAppender       
  6. #定义A1的布局模式为PatternLayout       
  7. log4j.appender.A1.layout=org.apache.log4j.PatternLayout       
  8. #定义A1的输出格式       
  9. log4j.appender.A1.layout.ConversionPattern=%-4r[%t]%-5p%c-%m%n       
  10.       
  11. #定义A2输出到文件       
  12. log4j.appender.A2=org.apache.log4j.RollingFileAppender       
  13. #定义A2要输出到哪一个文件       
  14. log4j.appender.A2.File=F:\\test\\example.log       
  15. #定义A2的输出文件的最大长度       
  16. log4j.appender.A2.MaxFileSize=100KB       
  17. #定义A2的备份文件数       
  18. log4j.appender.A2.MaxBackupIndex=3      
  19. #定义A2的布局模式为PatternLayout       
  20. log4j.appender.A2.layout=org.apache.log4j.PatternLayout       
  21. #定义A2的输出格式       
  22. log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n  

格式化参数含义:

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

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

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

%c:输出所属类的类名;

%t:输出该日志事件的线程名;

%n:输出回车换行符,Windows平台为“\r\n”,UNIX平台为“\n”;

%d:输出日志时间点的日期或时间,默认格式为ISO8601,可以在其后指定格式;

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

 

3.配置文件 xml格式

 语法定义文件:org/apache/log4j/xml/log4j.dtd

 查看DTD的工具(Stylus Studio®'s DTD editor)介绍:http://www.stylusstudio.com/dtd_editor.html

 迅雷上搜索Stylus Studio即可搜到很多下载链接。

 样例(这个文件中配置了两个输出地,并配置了根Logger和shop.log的日志):

  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  3.   
  4. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  5.        
  6.     <root>  
  7.         <level value="debug"/>  
  8.         <appender-ref ref="rootFile" />           
  9.     </root>  
  10.        
  11.     <logger name="shoplog">  
  12.         <level value="debug"/>  
  13.         <appender-ref ref="shopFile" />  
  14.     </logger>  
  15.        
  16.     <appender name="rootFile" class="org.apache.log4j.RollingFileAppender">  
  17.         <param name="File" value="d:/log/example.log" />  
  18.         <param name="Append" value="false" />  
  19.         <layout class="org.apache.log4j.PatternLayout">  
  20.             <param name="ConversionPattern" value="%p(%c:%l) - %m%n" />  
  21.         </layout>  
  22.     </appender>  
  23.        
  24.     <appender name="shopFile" class="org.apache.log4j.RollingFileAppender">  
  25.         <param name="File" value="d:/log/example_shop.log" />  
  26.         <param name="Append" value="true" />  
  27.         <param name="MaxFileSize" value="10240" />  
  28.         <layout class="org.apache.log4j.PatternLayout">  
  29.             <param name="ConversionPattern" value="%p(%c:%l) - %m%n" />  
  30.         </layout>  
  31.     </appender>  
  32. </log4j:configuration>  

其对应的Java properties文件为:

  1. log4j.rootLogger=DEBUG,rootFile   
  2. log4j.logger.shoplog=DEBUG,shopFile   
  3.   
  4. log4j.appender.rootFile=org.apache.log4j.RollingFileAppender   
  5. log4j.appender.rootFile.File=d:/log/example.log   
  6. log4j.appender.rootFile.Append=false  
  7. log4j.appender.rootFile.layout=org.apache.log4j.PatternLayout   
  8. log4j.appender.rootFile.layout.ConversionPattern=%p(%c:%l) - %m%n   
  9.   
  10. log4j.appender.shopFile=org.apache.log4j.RollingFileAppender   
  11. log4j.appender.shopFile.File=d:/log/example_shop.log   
  12. log4j.appender.shopFile.Append=true  
  13. log4j.appender.shopFile.layout=org.apache.log4j.PatternLayout   
  14. log4j.appender.shopFile.layout.ConversionPattern=%p(%c:%l) - %m%n  

 

4.在web应用中使用Log4J

    在web应用中,通常我们会利用servlet来初始化Log4J(读取Log4J的配置文件、配置好Log4J的环境),而这个servlet设置为web容器启动时加载(通过修改web.xml)。这样,在其他的web组件中就可以自由使用Log4J的日志功能了。

Log4JInitServlet.java

  1. import javax.servlet.*;   
  2. import javax.servlet.http.*;   
  3. import org.apache.log4j.PropertyConfigurator;   
  4.   
  5. public class Log4JInitServlet extends HttpServlet   
  6. {   
  7.     protected void processRequest(HttpServletRequest request, HttpServletResponse response)   
  8.     throws ServletException, IOException   
  9.     {   
  10.            
  11.     }   
  12.        
  13.     public void init() throws ServletException   
  14.     {   
  15.         //获取属性文件的完整路径   
  16.         String path = getServletContext().getRealPath("/");   
  17.         String configfile = path + getInitParameter("configfile");   
  18.            
  19.         //为所有的Servlet初始化配置   
  20.         PropertyConfigurator.configure(configefile);   
  21.     }   
  22. }  

 修改web.xml,并加入以下代码:

  1. <servlet>  
  2.     <servlet-name>log4j config fileservlet-name>  
  3.     <servlet-class>Log4JInitServletservlet-class>  
  4.     <init-param>  
  5.         <param-name>configefileparam-name>  
  6.         <param-value>/WEB-INF/log4jconfig.propertiesparam-value>  
  7.     init-param>  
  8.     <!---->  
  9.     <load-on-startup>1load-on-startup>  
  10. servlet>  

 log4jconfig.properties(放在/WEB-INF/目录下)

  1. log4j.rootLogger=DEBUG,ictFile   
  2.   
  3. #define a logger named log4jTestLogger,输出地为console和file   
  4. log4j.logger.log4jTestLogger=WARN,console,file   
  5.   
  6. log4j.appender.console=org.apache.log4j.ConsoleAppender   
  7. log4j.appender.console.layout=org.apache.log4j.PatternLayout    
  8. log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}  [%c]-[%p] %m%n   
  9.   
  10. log4j.appender.file=org.apache.log4j.RollingFileAppender   
  11. log4j.appender.file.File=F:\log.html   
  12. log4j.appender.file.MaxFileSize=500KB  
  13. log4j.appender.file.MaxBackupIndex=1  
  14. log4j.appender.file.layout=org.apache.log4j.HTMLLayout  

 log4j在JAVA中的使用代码:

  1. Logger rootlogger = Logger.getRootLogger();   
  2. Logger log4jlogger = Logger.getLogger("log4jTestLogger");   
  3.   
  4. log4jlogger.debug("This is DEBUG info.");   
  5. log4jlogger.info("This is INFO info.");   
  6. log4jlogger.warn("This is WARN info.");   
  7. log4jlogger.fatal("This is FATAL info.");   
  8. log4jlogger.error("This is ERROR info.");   
  9. ....  

 

分享到:
评论
1 楼 hanyuhaha 2007-09-26  
不是很简洁

相关推荐

    Log4qt使用例程(仅供参考)

    在本使用例程中,我们将深入探讨如何利用Log4qt进行有效的日志管理和调试。 首先,Log4qt的核心概念包括Logger、Appender、Layout和Filter。Logger是日志信息的源头,用于创建和管理日志记录器。Appender负责将日志...

    FFT变换C例程.rar

    下面将详细介绍FFT变换的基本原理以及C语言实现的关键点。 ### FFT基本原理 傅里叶变换是一种将信号从时域转换到频域的数学工具。在离散形式中,DFT计算一个序列的离散频率成分。计算N点DFT的时间复杂度为O(N^2),...

    DSP FFT例程

    **DSP FFT例程详解** FFT(快速傅里叶变换)是一种高效的算法,用于计算离散傅里叶变换(DFT)及其逆变换。在数字信号处理(DSP)领域,FFT被广泛应用于频谱分析、滤波器设计、信号合成等多种场景。本教程将深入...

    SIM800C模块应用Arduino 51单片机 STM32软件例程源码资料合集.zip

    4、Linux 5、PC端 6、Windows 01.STM32 拨打电话 02.STM32 发送短信 03.STM32 短信远程控制开关 04.STM32 TCP通信 GSM GPRS模块和STM32的连接方式.txt 01.STC89C52+SIM800C拨打电话 02.STC89C52+SIM800C发送短信 ...

    log4db2:用SQL-PL编写的DB2 for LUW的日志记录实用程序-开源

    该实用程序的概念和体系结构基于流行的Java日志记录实用程序,例如Log4j和slf4j / logback。 * Log4j [http://logging.apache.org/log4j] * Logback / SLF4J [http://logback.qos.ch/] [http://www.slf4j.org/]源...

    ibatise例程JPetStore

    同时,日志记录也是调试的重要工具,例如使用log4j记录操作过程,便于排查问题。 通过对JPetStore的深入学习,我们不仅可以了解ibatis的使用,还能掌握MVC架构、Spring整合、事务管理等多个方面的重要知识,这对于...

    stm32f103ve rtt log打印

    - 在RTOS(如FreeRTOS)环境中,RTT可用于跟踪任务状态、堆栈使用情况、中断服务例程(ISR)行为等。 - 在硬件驱动开发中,RTT日志可以帮助分析I/O操作、通信协议错误等问题。 通过以上步骤,你可以有效地在STM32...

    MyEclipse8下struts2开发例程及解析1.doc

    - `commons-logging-1.1.x.jar`:Apache Software Foundation 提供的日志包,Struts 2 使用它来支持 Log4J 和 JDK 日志记录。 - `commons-fileupload-1.x.x.jar`:文件上传组件,对于 Struts 2.1.6 及以上版本是...

    自学mybatis系列

    power designer win7 win8 解析 excel 解析 xml ...log4j spring 小工具 日志 定时器 中国地图 能点 mysql 验证码 easyUI 了解 EXT 了解 spring 用户权限 验证框架了解 HttpClient 爬虫 反射

    DFT.zip_DFTmatlab例程_dft matlab 程序_时域频域转换_逆傅里叶变换_频时转换

    因此,MATLAB通常会使用快速傅里叶变换(FFT)算法,它是DFT的一种高效实现,其计算复杂度降低到了O(N log N)。MATLAB中的`fft`函数就是用于执行FFT的,例如: ```matlab X = fft(x); ``` 这里的`x`是输入的时域...

    psnr.zip_matlab例程_matlab_

    \[ MSE = \frac{1}{MN} \sum_{i=1}^{M} \sum_{j=1}^{N} (I_{ref}(i,j) - I_{dist}(i,j))^2 \] 其中,`M`和`N`是图像的高度和宽度,`I_{ref}`是参考图像,`I_{dist}`是失真图像。 3. **MATLAB实现**:在MATLAB中,...

    DFT_FFT_Times.zip_matlab例程_matlab_

    下面将详细阐述DFT、FFT以及MATLAB中的实现方式。 一、离散傅里叶变换(DFT) 离散傅里叶变换是将离散时间信号转换到离散频率域的一种数学方法。对于一个长度为N的序列x[n],其DFT定义为: X[k] = Σ (x[n] * e^...

    FFT.zip_matlab例程_matlab_

    FFT算法通过分解DFT为一系列对称和偶对运算,大大降低了计算复杂度,使得时间复杂度降低到O(N log N)。在MATLAB中,`fft`函数就是实现这一算法的接口,可以非常方便地进行快速傅里叶变换。 在MATLAB中使用FFT进行时...

    p156_DFT_FFT.rar_matlab例程_matlab_

    \[ X[k] = \sum_{n=0}^{N-1} x[n] e^{-j2\pi kn/N} \] 其中,\( X[k] \) 是频谱,\( x[n] \) 是原始的离散时间序列,\( N \) 是序列的长度,\( k \) 是频率索引。 快速傅里叶变换(FFT)是DFT的一种高效算法,它极...

    Oracle体系结构46256987101.ppt

    以及其他辅助进程,如Archiver Log Writer (ARCH) 和 Job Queue Processes (J00*) 等。 4. **用户进程与服务器进程** 用户进程是在客户端运行的程序,如SQL*Plus或PL/SQL Developer,它们通过网络与Oracle服务器...

    struts简单实现用户注册(最新修订)

    2.log4j 3.自定义tag 4.show.jsp列表的empID字段的sort 5.struts的validate 6.ajax实现的分页 7.ajax实现了省市下拉列表的联动 8.ajax的文件上传 9.批量删除 10.token控制刷新提交 11.简单的excl报表 12....

    九九物联 | 新一代WiFi 蓝牙共存方案开发板评测活动-RTL8720Cx SDK上手指南.pdf

    - **project文件夹**:包含了IAR工程配置文件、编译输出文件以及模块外设使用的参考例程代码。 通过以上详细介绍,我们可以了解到九九物联提供的新一代WiFi蓝牙共存方案开发板的SDK上手指南涵盖了从开发环境搭建到...

    1.8寸LCD-STM32F103C8测试程序_stm32lcd_

    描述中提到,“1.8寸屏幕使用例程,平台为stm32f103zet6”,这表明该压缩包包含的是一个针对1.8英寸LCD的示例代码,用于在STM32F103ZET6开发板上运行。STM32F103ZET6是STM32F103系列的一个变体,拥有更多的引脚和更...

    Fortran标准库函数参考

    #### 四、Fortran库例程参考 - **`abort`**: 终止程序运行并生成核心文件,主要用于调试目的。 - **`access`**: 检查文件是否具有指定的权限,例如读取、写入或执行权限。 - **`alarm`**: 设置定时器,在指定的时间...

    POI操作Excel----------(转人家的)

    HSSFWorkbook和HSSFSheet等类通过log机制(如Apache Log4J的POILogger)提供日志功能,有助于调试和追踪问题。 以下是一个使用POI创建新Excel文件的简单示例: ```java import org.apache.poi.hssf.usermodel....

Global site tag (gtag.js) - Google Analytics