log4j 输出 json 格式日志

总所周知,默认的log4j,采用 文本方式输出日志。

但有的时候,需要对日志进行统计分析,尤其是增加了自定义的输出参数,此时不方便对文本数据进行解析,

json格式就派上了用场。

修改log4j配置以支持输入json格式日志,非常简单:只需要将 <PatternLayout /> 改为 <JsonLayout /> 即可,如下图:

打印出的日志,格式如下:

继而提出更高的需求,比如:将日志打印在一行中,输出自定义参数(即ThreadContext线程数据),打印报错代码定位,格式化时间字段,诸如此类。

JsonLayout 标签本身是log4j包中的一个类,里面有一些属性,可以进行设置,

compact 设置是否紧凑输出(即将日志输出到一行);

eventEol 设置强制换行(否则在compact=true的情况下,日志始终输出在同一行中);

properties 设置打印自定义的线程参数(可参考博文https://blog.csdn.net/wangjunjun2008/article/details/89393960

locationInfo 设置打印报错的类名、方法名、所属行数(这个默认竟然不打印,也是很奇怪了);

额外还有一个参数complete 设置是否添加页眉页脚(即在同一个请求中,将打印的日志用中括号([ ])包围),不过本人好奇,在多线程的情况下 ,打印在同一个日志文件中,如何添加页眉页脚呢?(懒得做实验了)。

转载自博文: https://www.cnblogs.com/wenq001/p/10251634.html

还有另外一篇文章供参考:https://stackoverflow.com/questions/41241100/log4j2-jsonlayout-timestamp-pattern

官网文章参考:https://logging.apache.org/log4j/2.x/manual/layouts.html

【遗留问题】

目前还有一个问题没有完美解决:打印的日志中,timeMillis 字段的值为一个Long类型(毫秒数),不便于查看日志,

未找到配置,修改时间的输出格式。

(此问题待解决)

猜你喜欢

转载自blog.csdn.net/u011453631/article/details/89393622