logback输出毫秒时间戳,添加converter解决

本文介绍了在logback中如何实现毫秒时间戳的输出。针对1.3版本前后的不同,提出了解决方案:在旧版本中通过自定义转换器并在配置文件中设置conversionWord,而在1.3版本及以后,可以直接使用%micros占位符来达到目的。

背景

在做项目开发的时候,内部提到一个技术需求:根据指定的格式输出链路日志。日志里面就有时间戳数据。

设计开发的过程中,添加一个appender作为链路日志输出专用。

需求:

在专用的appender的encoder,需要按照如下格式输出毫秒时间戳,%timestamp代表毫秒时间戳占位符。

<encoder>
    <pattern>%timestamp| xxxxxx.xxx</pattern>
</encoder>

解决方案:

  • 在logback1.3之前,添加一个转换器

    public class TimeStampConverter extends ClassicConverter {
        @Override
        public String convert(ILoggingEvent event) {
            return String.valueOf(System.currentTimeMillis());
        }
    }
    

    同时,在 logback-base.xml这种logback的配置文件中,添加如下\<conversionRule>:

    <include>
       <!-- 这里是其他配置 -->
        <conversionRule conversionWord="timestamp"  converterClass="com.x.TimeStampConverter" />
       <!-- 这里是其他配置 -->
    </include>
    

    conversionWord=“timestamp” 这个 “timestamp"就可以被logback识别了,这样就能够按照下面种方式输出时间戳。

    <encoder>
        <pattern>%timestamp| xxxxxx.xxx</pattern>
    </encoder>
    
    • 经过查询资料,在logback 1.3之前的版本(不包括1.3)是不支持毫秒时间戳的输出的,因此可以直接以%msg的方式从 logger.info等方法中获取。

    • logback 1.3版本之后,可以以占位符 %micros 进行毫秒时间戳的输出。

      参考连接: https://logback.qos.ch/manual/layouts.html#conversionWord

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值