0

我想从 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} 没有被环境变量替换。如果我给出硬编码值,例如 dir="C:\xyz\abc",它可以正常工作。

谁能指导我在服务器启动时用环境中的值替换 ${my.logs.dir} ?

谢谢

4

1 回答 1

0

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

如果您出于某种原因绝对必须使用环境变量,Tomcat 文档在其关于可以设置为自定义 Tomcat 行为的系统属性的部分中引用了属性替换:

org.apache.tomcat.util.digester。PROPERTY_SOURCE

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

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

于 2013-04-10T19:50:11.293 回答