在 build.gradle 文件中设置 cargo.tomcat.valve 值

Setting cargo.tomcat.valve values in a build.gradle file

我正在尝试做什么: 我想将 AccessLogValve 添加到 tomcat server.xml 以便我可以记录自定义 header 值。 (参考:https://jfrog.com/knowledge-base/how-can-i-log-custom-request-headers-using-the-tomcat-access-log-valve/

我遇到的问题: Every-time 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'

我已经尝试了上述的各种版本,但 none 似乎有效。

我可以看到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 添加自定义阀门的方法。

经过研究,我们发现 server.xml 文件中的 access log updates for tomcat 可以与 cargo plugin version >= 2.3 (目前最新的是 2.7.1 作为2020 年 4 月 30 日)

在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"
    ]