您的位置:首页 > 其它

Log4j中使用相对路径的方法

2008-06-14 17:40 344 查看
下面以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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: