I am trying to apply masking on my log data while logging them in JSON format. When i apply 2 appenders nested in one appender, only last one is getting affected.
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<nestedField>
<fieldName>uslog</fieldName>
<providers>
<timestamp>
<fieldName>timestamp</fieldName>
<pattern>MM/dd/yyyy'T'HH:mm:ss.SSS'Z'</pattern>
<timeZone>UTC</timeZone>
</timestamp>
<logLevel>
<fieldName>log_level</fieldName>
</logLevel>
<loggerName>
<fieldName>logger_name</fieldName>
</loggerName>
<version>
<fieldName>log_version</fieldName>
</version>
<pattern>
<pattern>
{
"service_id":"test",
"service_version":"0.0.1",
"log_type":"msg"
}
</pattern>
</pattern>
<mdc>
<fieldName>log_context</fieldName>
<includeMdcKeyName>correlationId</includeMdcKeyName>
</mdc>
<message/>
<stackTrace>
<fieldName>stackTrace</fieldName>
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<rootCauseFirst>true</rootCauseFirst>
</throwableConverter>
</stackTrace>
<logstashMarkers/>
</providers>
</nestedField>
</providers>
</encoder>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.test.MaskingLogUtil">
<maskPattern>\"phone_number\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>\"additional_phone_numbers\"\s*:\s*\["(.*?)"]</maskPattern>
<maskPattern>\"additional_emails\"\s*:\s*\["(.*?)"]</maskPattern>
<maskPattern>\"family_name\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>\"given_name\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>\"full_name\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>\"username\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>\"userid\"\s*:\s*\"(.*?)\"</maskPattern>
<maskPattern>.*userid\s*:\s(.*)</maskPattern>
<maskPattern>(\w+@\w+\.\w+)</maskPattern>
<pattern>%-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException</pattern>
</layout>
</encoder>
I am trying to achieve JSON logging with logback while applying my custom encoder to mask some data using xml configuration