参考: 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. android强制关闭软键盘代码

    InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); imm.t ...

  2. jqgrid 单列排序和组合排序

    有时,我们需要设置jqgrid表格按某个列排序,或则按多个列组合排序.如何实现? 1)设置可以排序的列  sortable: true 2)设置 multiSort: true 启用组合排序 $(&q ...

  3. CAN调度理论与实践分析

    CAN调度理论与实践分析 分布式嵌入式系统是当前嵌入式系统的重要发展方向,因为它能提供更强的性能,节约系统的总体成本.但是由于各单个节点必须有通信网络相连才能协调地工作,网络就成了关键部分,没有网络提 ...

  4. tomcat-在cmd窗口启动Tomcat

    平时,一般使用tomcat/bin/startup.bat目录在windows环境启动Tomcat,或者使用IDE配置后启动. 下面来简单介绍下如果在cmd窗口直接输入命令启动Tomcat: 1.将t ...

  5. Git与TortoiseGit基本操作

    Git与TortoiseGit基本操作 1. GitHub操作 本节先简单介绍 git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(C ...

  6. intellij idea新建maven项目,一直loading archetype list.....

    不知道什么时候开始,在idea里新建maven项目时,在new module页面,一直显示loading archetype list....,导致一直没办法新建.后来我以为是防火墙问题,各种设置还是 ...

  7. 全虚拟化和半虚拟化的区别 cpu的ring0 ring1又是什么概念? - 转

    http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html ring0是指CPU的运行级别,ring0是最高级别,ring1次之, ...

  8. CF 55 D. Beautiful numbers

    D. Beautiful numbers 链接 题意: 求[L,R]中多少个数字可以整除它们的每一位上的数字. 分析: 要求模一些数字等于0等价于模它们的lcm等于0,所以可以记录当前出现的数字的lc ...

  9. 有关ADO.NET基础中的基础的熟悉过程

    现在对于ADO.NET基础的理解与记忆并不严谨和完善 所以,只写一点关于自己的理解,嗯,一种去转换思维理解的方法吧,算是吧 希望各位前辈或者同学,积极指出其中的错误和偏差 个人对于刚接触的ADO.NE ...

  10. vue初学实践之路——vue简单日历组件(3)

    这一篇我们来实现管理员修改每一天剩余数量的功能. <div id="calendar"> <div id="left"> <spa ...