首页 > 解决方案 > 在 build.gradle 文件中设置 cargo.tomcat.valve 值

问题描述

我正在尝试做的事情:我想向 tomcat server.xml 添加一个 AccessLogValve,以便我可以记录自定义标头值。(参考:https ://jfrog.com/knowledge-base/how-can-i-log-custom-request-headers-using-the-tomcat-access-log-valve/ )

我遇到的问题:每次运行 gradle 时,它​​都会创建新的 server.xml。我想添加一个cargo.tomcat.valve容器属性,但是我找不到有效的格式。

我要添加的阀门是Access Log Valve https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Access_Log_Valve

一个失败的例子是containerProperties ['cargo.tomcat.valve'] = 'className=org.apache.catalina.valves.AccessLogValve| pattern=combined'

我已经尝试了上述各种版本,但似乎都没有。

我可以看到Maven的例子是

<cargo.tomcat.valve.stuckthread>
    className=org.apache.catalina.valves.StuckThreadDetectionValve|
    threshold=60
</cargo.tomcat.valve.stuckthread>

参考: https ://codehaus-cargo.github.io/apidocs/org/codehaus/cargo/container/tomcat/TomcatPropertySet.html#CUSTOM_VALVE

但是我找不到使用 gradle 添加自定义阀门的方法。

标签: tomcatbuild.gradlecargotomcat-valve

解决方案


经过研究,我们发现tomcat的server.xml文件中的访问日志更新可以与> = 2.3的cargo插件版本一起使用(当前最新的是2020年4月30日的2.7.1)

build.gradle 中更新阀门的示例如下:

containerProperties  = [
            'cargo.tomcat.ajp.port' : 8050,
            'cargo.tomcat.valve' : "className=org.apache.catalina.valves.AccessLogValve|pattern=%h %l %u %t &quot;%r&quot; %s %b %{X-Custom-Header}i|directory=logs|prefix=localhost_access_log.|suffix=.txt"
    ]


推荐阅读