我想从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}吗?
由于
答案 0 :(得分:0)
我认为Tomcat配置文件中默认情况下环境变量不可用。但是,系统属性是。因此,如果将变量添加为系统属性而不是环境变量,则应该可以。
如果由于某种原因绝对必须使用环境变量,那么Tomcat文档中有关于System Properties部分的属性替换的引用可以设置为自定义Tomcat行为:
org.apache.tomcat.util.digester。 PROPERTY_SOURCE
将此属性设置为实现org.apache.tomcat.util.IntrospectionUtils.PropertySource的类的完全限定名称。要求公共构造函数不带参数。
使用此属性添加属性源,当在Tomcat解析的XML文件中找到$ {parameter}表示的参数时,将调用该属性源。