使用环境变量accesslogvalve目录

时间:2013-04-10 19:32:35

标签: tomcat tomcat-valve

我想从setenv.bat中的值填充accesslogvalve中的“dir”。 例如:

<Valve
className="org.apache.catalina.valves.AccessLogValve"
directory="${my.logs.dir}"
prefix="access_log"
fileDateFormat="yyyy-MM-dd.HH"
suffix=".log"
pattern="%t %H cookie:%{SESSIONID}c request:%{SESSIONID}r  %m %U %s %q %r"/>

我在setenv.bat

中指定了“my.logs.dir”

set my.logs.dir=C:\xyz\abc

当我启动tomcat时,我在tomcat安装下看到一个文件夹$ {my.logs.dir}。问题是当tomcat启动时$ {my.logs.dir}没有被env变量替换。如果我给出像 dir="C:\xyz\abc"这样的硬编码值,它就可以正常工作。

有人可以指导我在服务器启动时用环境中的值替换$ {my.logs.dir}吗?

由于

1 个答案:

答案 0 :(得分:0)

我认为Tomcat配置文件中默认情况下环境变量不可用。但是,系统属性是。因此,如果将变量添加为系统属性而不是环境变量,则应该可以。

如果由于某种原因绝对必须使用环境变量,那么Tomcat文档中有关于System Properties部分的属性替换的引用可以设置为自定义Tomcat行为:

  

org.apache.tomcat.util.digester。 PROPERTY_SOURCE

     

将此属性设置为实现org.apache.tomcat.util.IntrospectionUtils.PropertySource的类的完全限定名称。要求公共构造函数不带参数。

     

使用此属性添加属性源,当在Tomcat解析的XML文件中找到$ {parameter}表示的参数时,将调用该属性源。