屏蔽 Logback 中动态文件名的日志输出值 XML

Masking Log Output Value for Dynamic File Name in Logback XML

我需要在日志输出中屏蔽一个值,该值用于为我的 Jenkins 作业生成 Cucumber 报告。这似乎是唯一可能的方法是修改回购的 logback.xml 文件。

我试过:

<appender name="REPORT" class="ch.qos.logback.core.FileAppender">
    <immediateFlush>false</immediateFlush>
    <file>target/surefire-reports/*.html</file>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'(?&lt;=api-key:).*', 'xxxx'}%n</pattern>
    </encoder>
</appender>

但是我得到一个不正确的文件名错误:

16:58:44,485 |-ERROR in ch.qos.logback.core.FileAppender[REPORT] - openFile(target/surefire-reports/*.html,true) call failed. java.io.FileNotFoundException: target\surefire-reports\*.html (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileNotFoundException: target\surefire-reports\*.html (The filename, directory name, or volume label syntax is incorrect)

当然,只要我一问,我就明白了...

<pattern>%-5level - %replace(%msg){'(?&lt;=api-key:).*', 'xxxx'}%n</pattern>

输出: 1 > api-key:xxxx

从 logback 文档中获取格式: https://logback.qos.ch/manual/layouts.html#cwOptions <pattern>%-5level - %replace(%msg){'\d{14,16}', 'XXXX'}%n</pattern>

正则表达式是我用来屏蔽 Jenkins 日志输出的正则表达式,将左尖括号替换为 html &lt; 因为它在 xml 文件中。

这是路线图上的内容:https://github.com/intuit/karate/projects/3#card-22529225

现在,您可以尝试 运行在 target/surefire-reports 中的所有 *.json 文件上使用 brute-force 正则表达式替换(并删除 *.xml 文件) =] 文件夹。确保在 之前执行此操作 生成 cucumber-html-reports 的例程是 运行。