log4j.xml web.xml配置

本文介绍如何使用Log4j配置不同类型的日志输出,包括控制台输出和多种文件滚动日志,如SQL日志、业务日志及不同级别的错误日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

log4j.xml配置实现配置实现配置实现配置实现  

先写一个Servlet的listener,用来监听服务启动,并自动解析log4j.xml文件 代码如下:

Java代码  
  1. import javax.servlet.ServletContextEvent;  
  2. import javax.servlet.ServletContextListener;  
  3. import org.apache.log4j.LogManager;  
  4. import org.apache.log4j.PropertyConfigurator;  
  5. import org.apache.log4j.xml.DOMConfigurator;   
  6. public class Log4jConfigListener implements ServletContextListener{    
  7.    
  8.     public static final String CONFIG_LOCATION_PARAM = "log4jConfigLocation";    
  9.     public static final String XML_FILE_EXTENSION = ".xml";  
  10.   
  11.     public void contextDestroyed(ServletContextEvent event) {    
  12.         LogManager.shutdown();    
  13.     }  
  14.   
  15.     public void contextInitialized(ServletContextEvent event) {      
  16.         String location = event.getServletContext().getInitParameter(CONFIG_LOCATION_PARAM);        if (location != null) {      
  17.             if (!location.startsWith("/")) {      
  18.                 location = "/" + location;      
  19.             }    
  20.             location = event.getServletContext().getRealPath(location);  
  21.   
  22.             //如果是xml结尾就用DOM解析,否则就用properties解析      
  23.             if (location.toLowerCase().endsWith(XML_FILE_EXTENSION)) {    
  24.                 DOMConfigurator.configure(location);      
  25.             }else {      
  26.                 PropertyConfigurator.configure(location);      
  27.             }        
  28.         }    
  29.     }  
  30. }  
 

 

 

再写个util类,用来生成所要的不同类型的日志 

代码如下:

 

 

Java代码  收藏代码
  1. package com.zhaopin.util;  
  2. import org.apache.log4j.Logger;  
  3.   
  4. public class Log4jUtil {      
  5.   
  6.     public static Logger getSQLLogger(){    
  7.         return Logger.getLogger("sql");    
  8.     }      
  9.   
  10.     public static Logger getBusinessLogger(){    
  11.         return Logger.getLogger("business");    
  12.     }      
  13.   
  14.     public static Logger getSimpleErrorLogger(){    
  15.         return Logger.getLogger("simpleError");    
  16.     }      
  17.   
  18.     public static Logger getNormalErrorLogger(){    
  19.         return Logger.getLogger("normalError");    
  20.     }  
  21. }    

 

下面开始写配置文件,先要在web.xml下添加信息

Xml代码  收藏代码
  1. <context-param>    
  2.     <param-name>log4jConfigLocation</param-name>    
  3.     <param-value>/WEB-INF/Log4j.xml</param-value>    
  4. </context-param>  
  5.   
  6. <!-- 加载log4j配置文件 -->    
  7. <listener>    
  8.     <listener-class>Log4jConfigListener</listener-class>    
  9. </listener>    
 

最重要的log4j.xml的配置信息如下:

Xml代码  收藏代码
  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.   
  5. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">    
  6.     <param name="target" value="System.out"/>   
  7.     <layout class="org.apache.log4j.PatternLayout">      
  8.         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/>    
  9.     </layout>    
  10. </appender>  
  11.   
  12. <!-- SQL类日志 -->    
  13. <appender name="sql" class="org.apache.log4j.DailyRollingFileAppender">    
  14.     <param name="File" value="/usr/local/tomcat/logs/testlog4j.sql.log"/>    
  15.     <param name="Append" value="true"/>  
  16.     <!-- name="DatePattern" 配置这条信息是让日志每天自动生成,名字尾部追加日期格式, 第一天生成的日志需第二天才能看到log 可以通过更改系统时间来看日志的输出 -->    
  17.     <param   name="DatePattern"   value="'.'yyyy-MM-dd"/>    
  18.     <layout class="org.apache.log4j.PatternLayout">      
  19.         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/>    
  20.     </layout>    
  21. </appender>      
  22.   
  23. <!-- 业务类日志 -->    
  24. <appender name="business" class="org.apache.log4j.DailyRollingFileAppender">    
  25.     <param name="File" value="/usr/local/tomcat/logs/testlog4j.business.log"/>    
  26.     <param name="Append" value="true"/>   <param   name="DatePattern"   value="'.'yyyy-MM-dd"/>    
  27.     <layout class="org.apache.log4j.PatternLayout">      
  28.         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/>    
  29.     </layout>    
  30. </appender>      
  31.   
  32. <!-- 不带执行轨迹错误日志 -->    
  33. <appender name="simpleError" class="org.apache.log4j.DailyRollingFileAppender">    
  34.     <param name="File" value="/usr/local/tomcat/logs/testlog4j.error.simple.log"/>    
  35.     <param name="Append" value="true"/>    
  36.     <param   name="DatePattern"   value="'.'yyyy-MM-dd"/>    
  37.     <layout class="org.apache.log4j.PatternLayout">      
  38.         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/>    
  39.     </layout>   
  40. </appender>      
  41.   
  42. <!-- 带执行轨迹错误日志 -->    
  43. <appender name="normalError" class="org.apache.log4j.DailyRollingFileAppender">    
  44.     <param name="File" value="/usr/local/tomcat/logs/testlog4j.error.normal.log"/>    
  45.     <param name="Append" value="true"/>    
  46.     <param   name="DatePattern"   value="'.'yyyy-MM-dd"/>    
  47.     <layout class="org.apache.log4j.PatternLayout">      
  48.         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/>    
  49.     </layout>    
  50. </appender>            
  51.   
  52. <logger name="sql" additivity="true">    
  53.     <priority value="info"/>    
  54.     <appender-ref ref="sql"/>    
  55. </logger>    
  56.   
  57. <logger name="business" additivity="true">    
  58.     <priority value="info"/>    
  59.     <appender-ref ref="simpleError"/>    
  60. </logger>    
  61.   
  62. <logger name="simpleError" additivity="true">    
  63.     <priority value="info"/>    
  64.     <appender-ref ref="simpleError"/>    
  65. </logger>    
  66.   
  67. <logger name="normalError" additivity="true">    
  68.     <priority value="info"/>    
  69.     <appender-ref ref="normalError"/>    
  70. </logger>    
  71.   
  72. <root>              
  73.     <appender-ref ref="STDOUT"/>              
  74.     <priority value="info"/>        
  75. </root>    
  76.   
  77. </log4j:configuration>  
 

 

在程序中应用时需要编写如下代码: Log4jUtil.getBusinessLogger().info("message!");  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值