我們在開發的時候,經常要打印日誌,有的時候會在一些代碼的關鍵節點處進行日誌輸出
打印結果卻是以下形式:
com.hollis.java.ways.ApplyRequest@39ddf169
有一個好的辦法,可以一勞永逸:
藉助logback(log4j也有類似的功能)的MessageConverter。無侵入性的解決這個問題
1、自定義一個Layout
/**
* 參數JSON格式化類
*
* @author Hollis
*/
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();
}
}
}
2、在logback中配置上這個Layout
<configuration>
<conversionRule conversionWord="m" converterClass="com.hollis.java.ways.ArgumentJsonFormatLayout"/>
</configuration>