日誌打印出來的對象都是亂碼或者二進制這樣的,怎麼辦?

我們在開發的時候,經常要打印日誌,有的時候會在一些代碼的關鍵節點處進行日誌輸出

打印結果卻是以下形式:

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>  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章