起因
读罢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();
}
}
}
感言
同事喜悦地说:“好了,真奇妙。”是的,我们工作学习中习得大神的一招半式,不要不知思考,遇到实际问题,优化一下,岂不妙哉?
来源:oschina
链接:https://my.oschina.net/hengbao666/blog/3212583