咱也自定义一个logback的MessageConverter

原创
2020/03/27 17:34
阅读数 1.4K

起因

  读罢Hollis大神的自定义一个logback的MessageConverter,我久久不能平静,这么好的东西!为什么不加到我的项目中来呢?说时迟,那时快,我添加了日志转换器,但是同事抱怨说,本来正常的 JSON 字符串输出变得有斜杠了。我一瞅,这!有点尴尬,我安慰同事说:“我加个判断,马上搞定。”

我的代码

/**
 * logback json格式日志转换工具
 *
 * @author hengbao
 */
public class ArgumentJsonFormatLayout extends MessageConverter {

    @Override
    public String convert(ILoggingEvent event) {
        try {
            return MessageFormatter.arrayFormat(event.getMessage(),
                    Stream.of(event.getArgumentArray()).map(argument -> {
                        Class<?> aClass = argument.getClass();
                        if (aClass.equals(String.class)) {
                            // 如果是字符串则直接输出
                            return argument;
                        }
                        if (aClass.equals(JSONObject.class)) {
                            // 若是JSONObject则输出其
                            return argument.toString();
                        }
                        return JSON.toJSONString(argument);
                    }).toArray()
            ).getMessage();
        } catch (Exception e) {
            return event.getMessage();
        }
    }
}

感言

  同事喜悦地说:“好了,真奇妙。”是的,我们工作学习中习得大神的一招半式,不要不知思考,遇到实际问题,优化一下,岂不妙哉?

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部