微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何访问/修改 logback contirb 的 JacksonJsonFormatter 中的自定义字段

如何解决如何访问/修改 logback contirb 的 JacksonJsonFormatter 中的自定义字段

我已经实现了一个自定义 Json Formatter,用于在我的应用程序中使用 log-back 进行日志记录。在自定义 JSON 格式化程序中,我添加了几个自定义字段,我想动态更改它们的值,即在记录时更改其值。我怎样才能做到这一点。 下面是我的 CustomJsonFormatter 代码

public class CustomJsonFormatter extends JacksonjsonFormatter {

    @Override
    public String toJsonString(Map map) throws IOException {
        map.put(TransformerConstants.APPNAME,TransformerConstants.USER_ID); 
map.put("errorCode,404);
    
        Map<String,String> memoryMap = new HashMap<>();
        memoryMap.put("committedMemoryMB",String.valueOf(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getCommitted()/TransformerConstants.BYTES_TO_MB));
        memoryMap.put("usedMemoryMB",String.valueOf(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()/TransformerConstants.BYTES_TO_MB));
        memoryMap.put("maxMemoryMB",String.valueOf(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()/TransformerConstants.BYTES_TO_MB));
        memoryMap.put("initialMemoryMB",String.valueOf(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getinit()/TransformerConstants.BYTES_TO_MB));

        map.put("systemMemory",memoryMap);
        return super.toJsonString(map);
    }

用于控制台输出的 logback.xml 文件

<appender name="JsonLogger"
        class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
            <jsonFormatter class="com.app.config.CustomJsonFormatter" />
            <appendLineseparator>true</appendLineseparator>
            <timestampformat>yyyy-MM-dd' 'HH:mm:ss.SSS</timestampformat>
        </layout>
    </appender>

我想在记录不同错误时更改错误代码字段的值。我该怎么做?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。