log4j,${catalina.home}是在哪定义的?

believefym 2011-02-14 03:24:29
一个appender的定义:<param name="File" value="${catalina.home}/logs/ssal/ssal-web.log" />

这个${catalina.home}在哪定义的呢?
...全文
14392 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
husband8375 2011-02-15
  • 打赏
  • 举报
回复
在系统的环境变量里面设定。。。。
Inhibitory 2011-02-14
  • 打赏
  • 举报
回复
在WEB-INF/classes/log4j.properties,如下

#A4 Print message into file
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.File=${catalina.base}/webapps/mlm/logs/hb-log ####这一行中使用了####
log4j.appender.A4.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[HB: %-5p] %d{yyyy-MM-dd HH:mm:ss} %l: %m%n
Sunkien 2011-02-14
  • 打赏
  • 举报
回复
如果没有错的话就应该是 环境变量
believefym 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 preferme 的回复:]

JVM在启动的时候,会将环境变量,转换到 系统属性 里面。
可以通过System.getProperty("");来获取。
catalina.home属性,就是运行tomcat的JVM的系统属性之一。
一般是由操作系统的环境变量CATALINA_HOME转换而来。
如果操作系统没有设置,tomcat会采用默认设置来填充该内容。
[/Quote]
老兄说的没错,不过不是我要问的点。。。
believefym 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dracularking 的回复:]

引用 2 楼 believefym 的回复:

引用 1 楼 dongqdonglin 的回复:

tomcat?的话就在tomcat 看看!!!


直接跑的unit test,没用tomcat
而且把${}括号里面的东东随便改好像也不会报错,奇怪。。。。

你这appender实际上是不是根本没用到?
[/Quote]

实际上用到了,只不过路径是在根目录下,我的windows系统是在C盘下面。。。
believefym 2011-02-14
  • 打赏
  • 举报
回复
我看了一下log4j相关的一源码

的确是取系统属性,System.getProperty(..., null)
当该属性没有定义的时候,也就是返回为nul的时候,前面那个变量${...}会被忽略,也就是直接用的后面的路径

所以即使随便修改那个变量,也没报错,后来发现始终在C盘根目录下建了这个log文件

当然,如果机器存在权限访问的问题,不能任意在C盘下,或者根目录下建文件的时候,就会出错了
冰思雨 2011-02-14
  • 打赏
  • 举报
回复
楼主看看tomcat/bin下面的catalina.bat或者相关的几个bat文件里面,
就有 CATALINA_HOME 属性的设置,当然还有JAVA_HOME等几个属性的设置。
这些环境变量,在JVM启动的时候,都会被转换成 系统属性(键值对的形式保存)。
冰思雨 2011-02-14
  • 打赏
  • 举报
回复
JVM在启动的时候,会将环境变量,转换到 系统属性 里面。
可以通过System.getProperty("");来获取。
catalina.home属性,就是运行tomcat的JVM的系统属性之一。
一般是由操作系统的环境变量CATALINA_HOME转换而来。
如果操作系统没有设置,tomcat会采用默认设置来填充该内容。
dracularking 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 believefym 的回复:]

引用 1 楼 dongqdonglin 的回复:

tomcat?的话就在tomcat 看看!!!


直接跑的unit test,没用tomcat
而且把${}括号里面的东东随便改好像也不会报错,奇怪。。。。
[/Quote]
你这appender实际上是不是根本没用到?
  • 打赏
  • 举报
回复
在系统属性里面:

System.getProperty("catalina.home");
madFatso 2011-02-14
  • 打赏
  • 举报
回复
http://flashdream8.javaeye.com/blog/698087
believefym 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dongqdonglin 的回复:]

tomcat?的话就在tomcat 看看!!!
[/Quote]

直接跑的unit test,没用tomcat
而且把${}括号里面的东东随便改好像也不会报错,奇怪。。。。
dongqdonglin 2011-02-14
  • 打赏
  • 举报
回复
tomcat?的话就在tomcat 看看!!!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧