Tomcat 为accesslogvalve目录使用环境变量

Tomcat 为accesslogvalve目录使用环境变量,tomcat,tomcat-valve,Tomcat,Tomcat Valve,我想从setenv.bat中的值填充accesslogvalve中的“dir”。 例: 我在setenv.bat中指定了“my.logs.dir” 设置my.logs.dir=C:\xyz\abc 启动tomcat时,我在tomcat安装下看到一个文件夹${my.logs.dir}。问题是${my.logs.dir}在tomcat启动时没有被env变量替换。如果我给出像dir=“C:\xyz\abc”这样的硬编码值,它可以正常工作 有人能指导我在服务器启动时用环境中的值替换${my.log

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


我在setenv.bat中指定了“my.logs.dir”


设置my.logs.dir=C:\xyz\abc

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

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


谢谢

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

如果您出于某种原因必须使用环境变量,Tomcat文档在其关于属性替换的部分中有一个参考,可以设置该部分以自定义Tomcat行为:

org.apache.tomcat.util.digester。财产来源

将其设置为实现org.apache.tomcat.util.IntrospectionUtils.PropertySource的类的完全限定名。必须具有不带参数的公共构造函数

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


感谢NilsH,我将探索Property_源选项。
<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"/>