对于这个问题我们一般想到的解决办法是:

log.info("param = {}", JSON.toJSONString(param));

但是这种办法比较繁琐并且容易忘记。
这里提供如下解决办法:

logback

public class ArgumentJsonFormatLayout extends MessageConverter {

    @Override
    public String convert(ILoggingEvent event) {
        try {
            return MessageFormatter.arrayFormat(event.getMessage(), Stream.of(event.getArgumentArray())
                .map(JSON::toJSONString).toArray()).getMessage();
        } catch (Exception e) {
            return event.getMessage();
        }
    }
}

在日志文件中加入:
<conversionRule conversionWord="m" converterClass="com.example.common.log.ArgumentJsonFormatLayout"/>
注意这里的m不能修改。

抽空找一下log4j的办法。


发飙的蜗牛
19 声望3 粉丝