参考: http://elf8848.iteye.com/blog/2008595

  1. log4j.logger.ApiLog=debug,ApiLog
  2. log4j.appender.ApiLog=org.apache.log4j.DailyRollingFileAppender
  3. log4j.appender.ApiLog.File=${sanjuSCM.root}/../../logs/sanjuSCM/ApiLog/Log_
  4. log4j.appender.ApiLog.DatePattern=yyyy-MM-dd'.log'
  5. log4j.appender.ApiLog.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.ApiLog.layout.ConversionPattern=%d - %l -%-4r [%t] %-5p %x - %m%n
  7. log4j.logger.WebLog=debug,WebLog
  8. log4j.appender.WebLog=org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.WebLog.File=${sanjuSCM.root}/../../logs/sanjuSCM/WebLog/Log_
  10. log4j.appender.WebLog.DatePattern=yyyy-MM-dd'.log'
  11. log4j.appender.WebLog.layout=org.apache.log4j.PatternLayout
  12. log4j.appender.WebLog.layout.ConversionPattern=%d - %l -%-4r [%t] %-5p %x - %m%n

前一章 : http://blog.csdn.net/hanjun0612/article/details/72639867

中提到了相对路径 ${sanjuSCM.root},如上图

其实这个要去web.xml中查找 webAppRootKey节点。

web.xml中webAppRootKey

------------------------------------------------------------------------------------------------
1、 web.xml配置 

 <context-param>

<param-name>webAppRootKey</param-name>

<param-value>webapp.root</param-value>

</context-param>

"webapp.root"这个字符串可以随便写任何字符串。如果不配置默认值是"webapp.root"。

 

可以用System.getProperty("webapp.root")来动态获项目的运行路径。

一般返回结果例如:/usr/local/tomcat6/webapps/项目名

2、解决以下报错

部署在同一容器中的Web项目,要配置不同的<param-value>,不能重复,否则报类似下面的错误:

Web app root system property already set to different value: 'webapp.root' = [/home/user/tomcat/webapps/project1/] instead of [/home/user/tomcat/webapps/project2/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!  

意思是“webapp.root”这个key已经指向了项目1,不可以再指向项目2.

3、加载方式

Spring通过org.springframework.web.util.WebAppRootListener 这个监听器来运行时的项目路径。

但是如果在web.xml中已经配置了 org.springframework.web.util.Log4jConfigListener这个监听器,

则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能

一般配置类型下面的例子:

  1. <!-- 加载Log4J 配置文件  -->
  2. <context-param>
  3. <param-name>log4jConfigLocation</param-name>
  4. <param-value>WEB-INF/conf/log4j.properties</param-value>
  5. </context-param>
  6. <context-param>
  7. <param-name>log4jRefreshInterval</param-name>
  8. <param-value>3000</param-value>
  9. </context-param>
  10. <listener>
  11. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  12. </listener>

4、在运行时动态的找出项目的路径

在log4j.properties配置文件,就可以按下面的方式使用${webapp.root}:

 log4j.appender.file.File=${webapp.root}/WEB-INF/logs/sample.log 

就可以在运行时动态的找出项目的路径

log4j 相对路径的更多相关文章

  1. 转载:log4j.properties log4j.xml 路径问题

    自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找lo ...

  2. spring boot 加载自定义log4j 文件路径

    spring boot 使用log4j 打印时,需首先去除自带 Logger ,然后加入log4j 依赖 <dependencies> <!-- https://mvnreposit ...

  3. springMVC项目中配置log4j.properties路径

    log4j.properties不打到war包中,单独写到一个存放配置文件的文件夹中,在容器中将该文件夹放入classpath,在web.xml中可以如下配置: <context-param&g ...

  4. log4j相对路径找不到,处理方法

    http://blog.csdn.net/u012345283/article/details/40821833?utm_source=tuicool&utm_medium=referral

  5. log4j.properties log4j.xml 路径问题

  6. log4j file 路径

    默认以System.getProperty("user.dir")为准 用LOGGER.warn(System.getProperty("user.dir")) ...

  7. java日志框架slf4j与log4j

    日志记录自然是非常重要的,但恐怕能记住slf4j与log4j等日志框架配置的人就很少了,这个东西不难,只是配置好后很少会去动它,开发新项目一般也是从其他项目拷贝,或者参照文档 废话不多说,先说log4 ...

  8. log4j在javaWeb项目中的使用

    在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...

  9. 使用命令参数方式指定log4j配置文件

    http://blog.csdn.net/changong28/article/details/39717209 ******************************************* ...

随机推荐

  1. Fiddler-http检测调试工具

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...

  2. 虚函数指针sizeof不为sizeof(void*)

    ref:http://bbs.csdn.net/topics/360249561 一个继承了两个虚基类又增加了自己的一个虚函数pif的类,sizeof(指向pif的指针)竟然是8(X86).我是从这里 ...

  3. HO引擎近况20190110

    前两天更新完,挺兴奋 趁着兴奋把虚拟机里面的MACOSX从10.12.6升级到了10.14 然后装XCODE,虽然比较熟悉了,但是架不住慢啊 先下载了一个DMG的镜像文件,用不了,转成ISO也不行 然 ...

  4. 20155331《网络对抗》Exp7 网络欺诈防范

    20155331<网络对抗>Exp7 网络欺诈防范 实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有: 简单应用SET工具建立冒名网站 et ...

  5. [2016北京集训测试赛15]statement-[线段树+拆环]

    Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成. 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs ...

  6. mfc CListCtrl

    了解CListCtrl属性 了解CListCtrl常用成员函数 代码示例 一.CListCtrl常用属性 View:视图方式;.大(标准)图标2.小图标3.列表4.报表 Sort:排序; No Scr ...

  7. TMS320VC5509的MCBSP配置成SPI模式通信

    1. 首先是把MCBSP的配置 其次是时钟停止模式的配置,关闭大同小异 SPI有4中模式,怎么根据上面的寄存器选择哪种模式?下面展示了其中两种,CLKXP=1的时候有另外两种,暂时不整出来了 2. 代 ...

  8. [CF1083D]The Fair Nut’s getting crazy[单调栈+线段树]

    题意 给定一个长度为 \(n\) 的序列 \(\{a_i\}\).你需要从该序列中选出两个非空的子段,这两个子段满足 两个子段非包含关系. 两个子段存在交. 位于两个子段交中的元素在每个子段中只能出现 ...

  9. 前端开发工具icestar

    前端开发工具icestar 最近忙里偷闲,把之前的mock工具进行了全面的重构,最大的改变就是换了个名称icestar,icestar意思就是"爱死他",首先他的预想并不只是替代m ...

  10. c#版flappybird 未完全实现

    这些天开始在深圳找工作,想着把从前有些淡忘的技术再温故下.看到尊敬的<传智播客>有一期公开课,讲的是用c#编写flappybird小游戏,也就自己搜了下游戏资源,也来试试看. 其实用到的技 ...