Log4j中使用相对路径的方法

下面以xml格式的log4j配置文件为例说明

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

  <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">

    <param name="Target" value="System.err"/>

    <param name="Threshold" value="ALL"/>

    <layout class="org.apache.log4j.PatternLayout">

      <param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>

    </layout>

  </appender>

  <appender name="FILE" class="org.apache.log4j.RollingFileAppender">

    <param name="File" value="${log4jdir}/log.txt"/>

    <param name="Threshold" value="ALL"/>

    <param name="MaxFileSize" value="300KB"/>

    <param name="MaxBackupIndex" value="20"/>

    <layout class="org.apache.log4j.PatternLayout">

      <param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>

    </layout>

  </appender>

 

  <root>

    <level value="DEBUG"/>

    <appender-ref ref="CONSOLE"/>

    <appender-ref ref="FILE"/>  

  </root>

</log4j:configuration>

1 在log4j.xml配置文件中以 ${变量名} 写路径     <param name="File" value="${log4jdir}/log.txt"/>

2  在初始化log4j之前设置系统变量    

3 上面d:/webroot/log4j 是写死了的, 但这个路径可以根据实际情况动态获得     比如你想得到WEB-INF的上级路径,可以这么写 这样解决相对web路径的问题

   public String getWebRootPath(ServletContextEvent sce) { 

      return sce.getServletContext().getRealPath("/"); 

   }

4 很多人喜欢直接把log4j.xml或log4j.properties文件放到classes下而不做DOMConfigurator.configure(log4jfile);这个操作,这时候可以在启动时可使用  java -Dlog4jdir=路径

    System.setProperty("log4jdir","d:/webroot/log4j");         

    String log4jfile = "log4j.xml";     

    DOMConfigurator.configure(log4jfile);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值