分享

Log4j中使用相对路径的方法

 WindySky 2008-12-15

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

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?> 
 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
 
<log4j:configuration xmlns:log4j="http://jakarta./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> 

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

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

<log4j:configuration xmlns:log4j="http://jakarta./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路径的问题

view plaincopy to clipboardprint?
public String getWebRootPath(ServletContextEvent sce) {   
 
   return sce.getServletContext().getRealPath("/");   
 

   public String getWebRootPath(ServletContextEvent sce) {

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

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


view plaincopy to clipboardprint?
System.setProperty("log4jdir","d:/webroot/log4j");           
 
String log4jfile = "log4j.xml";       
 
DOMConfigurator.configure(log4jfile); 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约