2013-04-10 31 views
0

我想从setenv.bat中的值填充accesslogvalve中的“dir”。 例如:使用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,我看到一个文件夹$ {my.logs.dir }在tomcat下安装。问题是,当tomcat启动时,$ {my.logs.dir}不会被env变量所取代。如果我给硬编码价值如dir="C:\xyz\abc",它工作正常。

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

谢谢

回答

0

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

如果你因为某些原因绝对要使用环境变量,Tomcat文档具有替代物业参考在它是可以被设置为自定义Tomcat的行为部分约System Properties

org.apache.tomcat .util.digester。 PROPERTY_SOURCE

将此设置为实现org.apache.tomcat.util.IntrospectionUtils.PropertySource的类的完全限定名称。需要有一个没有参数的公共构造函数。

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

+0

感谢NilsH我将探索Propery_source选项。 – 2013-04-11 14:49:58