java - 如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?

标签 java logstash logback logstash-logback-encoder

我尝试将 logstash-logback-encoder 版本 6.4 配置为将 pretty-print JSON 打印为

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
    </encoder>
</appender>

输出是如预期的 pretty-print 。然后我继续进行配置,屏蔽为

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
    </encoder>
</appender>

输出也按预期标记

无论如何,当我将这两者结合在一起时,它只做一件事,要么 pretty-print ,要么屏蔽

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
    </encoder>
</appender>

它只进行屏蔽,但打印不漂亮

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
            <defaultMask>XXXX</defaultMask>
            <path>password</path>
        </jsonGeneratorDecorator>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
    </encoder>
</appender>

它仅进行 pretty-print ,但未屏蔽

如何将 PrettyPrintingJsonGeneratorDecoratorMaskingJsonGeneratorDecorator 组合在一起?可以请您帮忙指教吗?

最佳答案

使用 CompositeJsonGeneratorDecorator ,像这样:

<appender name="consoleAsJSON" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <includeCallerData>true</includeCallerData>
        <jsonGeneratorDecorator class="net.logstash.logback.decorate.CompositeJsonGeneratorDecorator">
            <decorator class="net.logstash.logback.decorate.PrettyPrintingJsonGeneratorDecorator"/>
            <decorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator">
                <defaultMask>XXXX</defaultMask>
                <path>password</path>
            </decorator>
        </jsonGeneratorDecorator>
    </encoder>
</appender>

关于java - 如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63753713/

相关文章:

java - 我如何将枚举与其相反的值关联起来,如在基本方向(北 - 南,东 - 西等)上?

java - java中处理大量异步调用

java - 替换ListView的 'column'中的数据

elasticsearch - Logstash正在将旧数据放入Elasticsearch。无法清除Elasticsearch数据

android - 如何将 gradle 配置为仅将 logback-classic 用于 Android 中的单元测试?

java - 如何更改 Maven 依赖项中的日志级别

java - 将 log4j 版本更新到 1.1.5 后未创建日志文件

java - 如何防止在 JavaFX 的 TableView 中选择另一行

elasticsearch - 错误 : Logstash stopped processing because of an error: (SystemExit) exit

mysql - 最近 JDBC mySQL 连接器重命名导致 Logstash 崩溃