Logback自定义日志输出内容

摘要:
1、 实现用户定义的Converterimportjava.io.PrintWriter;importch.qos.logback.cclassic.pattern.MessageConverter;这里的返回字符串是日志输出returnsuper的最终内容。转换(事件);packagech.qos.logback.cclassic.pattern;

场景

一般情况下,日志打印的内容都是根据配置文件中配置的pattern格式指定好的。在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的pattern格式一致。
例如,在logback.xml配置文件中指定了日志打印格式:
%d{HH:mm:ss.SSS} %-5level [%thread][%logger{0}-%L] %msg%n"
这些格式的意义在官网的文档上都有说明。其中%msg就是我们调用日志打印方法时输入的内容。
当官方指定的这些格式不能满足我们的需求,或者是我们需要在打印日志的时候,需要加上一些比较有规律的内容,例如打印本机的hostname/ip等logback本身没有提供的格式的时候,我们就可以自定义日志输出的内容与格式。

一、实现自定义Converter

import java.io.PrintWriter;
import java.io.StringWriter;

import com.alibaba.dubbo.rpc.RpcContext;
import com.alibaba.fastjson.JSONObject;

import ch.qos.logback.classic.pattern.MessageConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;

public class LogMessageConverter extends MessageConverter{
    @Override
    public String convert(ILoggingEvent event){
    //可以在里面增加其他处理,此处return的字符串就是日志输出的最终内容
        return super.convert(event);
    }
|

创建一个类LogMessageConverter继承MessageConverterMessageConverter中就只有一个方法convert,代码如下:

package ch.qos.logback.classic.pattern;

import ch.qos.logback.classic.spi.ILoggingEvent;

/**
 * Return the event's formatted message.
 * 
 * @author Ceki Gülcü
 */
public class MessageConverter extends ClassicConverter {
    public String convert(ILoggingEvent event) {
        return event.getFormattedMessage();
    }
}

这个类的作用在它的注释中解释了:返回格式化之后的message。它继承ClassicConverter,而ClassicConverter是所有Converter的父类。因此,如果我们需要在原有日志打印内容的基础上加上一些内容,就可以在自定义Converter中的convert中实现自己的逻辑处理即可。

二、修改配置文件

完成了自定义的Converter之后,就是将这个Converter配置到配置文件中。在logback配置文件中的根节点<configuration>下增加节点<conversionRule>,例如:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<conversionRule conversionWord="msg" converterClass="com.xxx.xxx.log.LogMessageConverter" />
        //....
</configuration>

<conversionRule>节点中的conversionWord="msg"属性,就是表示在pattern中指定%msg时,调用的就是converterClass属性中指定的Converter

免责声明:文章转载自《Logback自定义日志输出内容》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Office2007设置无格式粘贴linux应用之gcc环境的安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

div包裹页面后多余部分没有显示,也没滚动条 overflow 属性设置

今天弄个div套着一个页面结果那个页面超出范围后页面没有滚动条可以滚动浏览下面的内容,原来是设置了overflow的hidden属性 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被...

Chrome 快捷键(谷歌浏览器)大全

chrome窗口和标签页快捷键: Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shift+N 在隐身模式下打开新窗口 Ctrl+O,然后选择文件 在谷歌浏览器中打开计算机上的文件 按住 Ctrl 键,然后点击链接 从后台在新标签页中打开链接,但您仍停留在当前标签页中 按住 Ctrl+Shift 键,然后点击链接 在新标签页中打开链接,同...

Java日志-Log4j2

Log4j2参考资料 Log4j2 官方配置文档 1. Log4j2基本概念: Logger 在代码中产生日志信息的。比如logger.info("some log message")。 有name属性,并与LoggerConfig(Logger的配置信息)相关联。使用LogManager.getLogger方法获得。一般来说在每个需要记录日志的类中都需要...

putty操作指南

首先付下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 这篇文章主要介绍Putty的基础用法,同时通过Putty来编辑HTML文件。一方面是自己最近学习的在线笔记,另一方面希望文章对你有所帮助。Putty是Windows下操作Linux命令的小工具,也是一个跨平台的远程登...

js中获取当前系统时间

使用var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4...

安装系统时出现 Windows无法打开所需的文件 C:Sourcesinstall.wim 的解决办法

  使用U盘安装Win10的时候,出现 Windows无法打开所需的文件 C:Sourcesinstall.wim,错误代码:0x8007000D,这是由于启动盘里 install.wim 文件不正确造成的。 新Win10 镜像文件一般都大于4G,镜像中Sources文件夹下面的 install.wim 单个文件就超过了4G, 它是安装系统的主程序文件,制...