log4j中使用相对路径

很多朋友想把日志写在web应用当中,下面来介绍一下:
[b][color=blue]log4j.properties[/color][/b]文件配置如下:

log4j.rootLogger=ERROR,CONSOLE,A1
log4j.addivity.org.apache=true

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=${webappHome}/WEB-INF/logs/website.log
log4j.appender.A1.Encoding=GBK
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n

这里,我们使用[b][color=blue]${webappHome}[/color][/b]来取得应用路径,[color=blue]webappHome[/color]是个变量。我们是从哪里取得的值呢?是从我们自己的类中,因此必须写这个类。很简单:
package com.clientmanager.util;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.log4j.PropertyConfigurator;


public class Log4jInit extends HttpServlet {


public void init(ServletConfig config) throws ServletException {
String prefix = config.getServletContext().getRealPath("/"); //获取当前路径
String file = config.getInitParameter("log4j");//从web.xml中获取参数值,找到log4j这个文件
System.setProperty("webappHome", prefix); //log4j.properties文件中的变量是在这里设置的
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
}

好了,有了这个类,下一步是要在服务器启动时来初始化这个类。所以要在web.xml中进行配置
web.xml

<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>com.clientmanager.util.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

最后说一点,如果你用[color=blue][b]struts[/b],[/color]而在[b][color=blue]web.xml[/color][/b]中配置了[b][color=blue]ServletAction[/color][/b],它的启动级别为[color=blue][b]<load-onstartup>0</load-on-startup>[/b][/color],那么我们的这个类的的启动级别不能低于它,否则可能会出现找不到路径的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值