java 日志输出 Log4j配置

非原创。只是对网上的资料做了补充。

通过以下配置可以配置将某级别范围的日志信息写入到指定文件中。
可以配置输出日志的级别优先级。

分为三部分:
1 日志输出文件log4j.xml的配置。
2 加载日志配置文件的servlet类。
2 web.xml配置

当然,还要加载必要的jar包。

1

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="infoChannel"
class="org.apache.log4j.RollingFileAppender">
<!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->
<param name="File" value="${catalina.home}/logs/test.log" /><!-- 设置File参数:日志输出文件名 -->
<param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="10KB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n" /><!-- 设置输出文件项目和格式 -->
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" /><!--设置将INFO级别的日志通过该通道输出-->
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="debugChannel"
class="org.apache.log4j.RollingFileAppender">
<!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->
<param name="File" value="${catalina.home}/logs/testdebug.log" /><!-- 设置File参数:日志输出文件名 -->
<param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="10KB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n" /><!-- 设置输出文件项目和格式 -->
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<!-- 设置监视器输出方式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-4r [%t] %-5p %c %x - %m%n" />
</layout>
<!--滤镜设置输出的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>

<root>
<!--设置输出的级别大于等于DEGUG priority value="DEBUG" / -->
<!--设置输出的级别-->
<priority value="INFO" />
<!-- 设置接收所有输出的通道 -->
<appender-ref ref="debugChannel" />
<appender-ref ref="infoChannel" /><!-- 与前面的通道id相对应 -->
<appender-ref ref="STDOUT" />
</root>

</log4j:configuration>



2


package com.test.log;

import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import javax.servlet.http.HttpServlet;;

/**
*
* 加载log4j日志配置文件
*
*/
public class ExtendedActionServlet extends HttpServlet {
private Log log = LogFactory.getLog(this.getClass().getName());

public ExtendedActionServlet() {}

public void init() throws ServletException {
log.info(
"Initializing, My MyActionServlet init this System's Const Variable");
String prefix = this.getServletConfig().getServletContext().getRealPath(
"/");//读取项目的路径
String file = this.getServletConfig().getInitParameter("log4j");
//读取log4j相对路径
String filePath = prefix + file;
DOMConfigurator.configure(filePath);//加载.xml文件
log.info("Initializing, end My Init");
super.init();//此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作
}
}



3 web.xml文件中增加servlet配置

<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>
com.test.log.ExtendedActionServlet
</servlet-class>
<init-param>
<param-name>log4j</param-name>
<!-- 这里标出了位置 -->
<param-value>/WEB-INF/log4j.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值