log4j2扩展——打印自定义日志输出格式,将日志输出为json或自定义

编程入门 行业动态 更新时间:2024-10-27 06:31:40

log4j2扩展——打印<a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义日志输出格式,将日志输出为json或自定义"/>

log4j2扩展——打印自定义日志输出格式,将日志输出为json或自定义

文章目录

  • 系列文章目录
  • 写在前面
  • 1、自定义LayOut
  • 2、log4j2.xml的配置
  • 3、测试一下吧

系列文章目录

学习Java日志框架之——搞懂JUL(java.util.logging)
学习Java日志框架之——搞懂log4j
学习Java日志框架之——搞懂日志门面(JCL+SLF4J)
学习日志框架之——搞懂logback
学习日志框架之——log4j2入门
log4j2扩展——打印自定义日志输出格式,将日志输出为json或自定义

写在前面

log4j2是当前最为主流的java日志框架,其性能及可扩展性要优于其他任意一款日志框架。

当我们想将日志输出为json,或者是其他我们想要的格式需要怎么处理呢?

log4j2入门请移步:学习日志框架之——log4j2入门

1、自定义LayOut

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.core.layout.AbstractStringLayout;
import org.apache.logging.log4j.message.Message;import java.nio.charset.Charset;/*** log4j2扩展:自定义json格式输出的日志*/// 声明插件
@Plugin(name = "MyLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
public class MyLayout extends AbstractStringLayout {protected MyLayout(Charset charset, String attr1, String attr2) {super(charset);this.attr1 = attr1;this.attr2 = attr2;}/*** 插件的创建工厂*/@PluginFactorypublic static MyLayout createLayout(@PluginAttribute(value = "charset", defaultString = "UTF-8") final Charset charset,@PluginAttribute(value = "attr1", defaultString = "") final String attr1,@PluginAttribute(value = "attr2", defaultString = "") final String attr2) {return new MyLayout(charset, attr1, attr2);}private final String attr1;private final String attr2;/*** 自定义日志输出格式* 该返回值就是我们所见到的日志输出格式,我们可以自定义为json、xml等等任意我们想要的格式*/@Overridepublic String toSerializable(LogEvent event) {Level level = event.getLevel();Message message = event.getMessage();long threadId = event.getThreadId();// ... event中包含着日志所有的信息return "attr1:" + attr1 + ";attr2:" + attr2 + ";level:" + level.name() + ";" + ";thread:" + threadId + " -- " + message.getFormattedMessage() + "\n" ;}}

2、log4j2.xml的配置

只需要将插件引入即可,使用非常方便!

<!-- 配置控制台输出 -->
<Console name="consoleAppender" target="SYSTEM_OUT"><MyLayout charset="UTF-8" attr1="aaa" attr2="bbb" />
</Console>

3、测试一下吧

logger.info("info信息");

输出结果:

attr1:aaa;attr2:bbb;level:INFO;;thread:1 – info信息

更多推荐

log4j2扩展——打印自定义日志输出格式,将日志输出为json或自定义

本文发布于:2024-03-15 03:12:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737988.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   日志   格式   json

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!