时间处理类插件用于解析、提取、标准化日志时间。
插件效果示例
表格展示该原始日志在分别使用时间解析插件(原生)与不使用插件的情况下,保存到日志服务后的数据结构。
|
原始日志 |
不使用插件 |
使用时间解析插件(原生) |
|
秒级时间:
|
Content:"{"level":"INFO","timestamp":"2025-09-29T09:56:01+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}" |
|
|
毫秒时间:
|
Content:"{"time":"2026-01-05T11:58:40,647Z", "filename":"out_data.py","levelname": "INFO", "threadName":"MainThread"}" |
|
|
纳秒时间:
|
Content:"{"time": "2026-01-05T11:40:22,298837465Z07:00","filename":"out_data.py","levelname":"INFO","threadName": "MainThread"}" |
|
时间处理类插件概览
日志服务提供以下多种类型的时间处理类插件,请按需要进行选择。
|
插件名称 |
类型 |
功能说明 |
|
时间解析 |
原生 |
解析并标准化日志中的时间字段。 |
|
提取日志时间 |
拓展 |
解析原始时间字段并可设为日志时间戳。 |
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件。具体操作,请参见处理插件概述。
原生插件与拓展插件的区别
原生插件:C++实现,性能更强。
拓展插件:Go实现,生态丰富且灵活,当业务日志过于复杂,无法使用原生插件处理时,可以考虑使用拓展插件。
-
拓展插件性能限制
-
日志采集限制
-
拓展插件对文本日志的处理采用行模式,即文件级别的元数据(例如
__tag__:__path__、__topic__等)会被存放到每一条日志中。 -
添加拓展插件后会影响和Tag相关的功能:
-
时间解析插件(原生)
时间解析插件用于解析日志的时间字段,并将解析结果设置为日志的__time__字段。
配置说明
|
参数名称 |
说明 |
|
原始字段 |
解析日志前,用于存放日志内容的原始字段,默认值为content。 说明
在使用正则解析插件时,原始字段仅支持设置为time,请确保您的正则解析配置中包含time作为提取字段。 |
|
时间格式 |
根据日志中的时间内容设置对应的时间格式。例如日志中的时间为10/Sep/2023:12:36:49,对应的时间转换格式为%d/%b/%Y:%H:%M:%S。 |
|
时区 |
选择日志时间字段所在的时区。如果不选择,则默认使用机器时区,即使用Logtail进程所在环境的时区。 |
默认情况下,日志服务中的日志时间戳精确到秒,所以时间格式只需配置到秒,无需配置毫秒、微秒等信息。如果原始日志中的时间字段包含毫秒、微秒或纳秒级精度,且需在日志服务中保留该精度,请参考如下示例开启纳秒精度,详细信息请参见日志采集支持纳秒精度时间戳。
|
原始日志 |
时间解析插件配置 |
时间格式 |
|
|
%Y-%m-%dT%H:%M:%S,%f |
开启纳秒精度支持:
进入Logtail配置页面,在,开启高级参数开关,并输入以下 JSON 内容以开启纳秒精度支持:
{
"EnableTimestampNanosecond": true
}在使用以下拓展插件解析纳秒或毫秒场景,也需要开启该高级参数 EnableTimestampNanosecond。
提取日志时间插件(拓展)
使用processor_gotime插件或processor_strptime插件解析原始日志中的时间字段。此处介绍两种插件的参数说明和配置示例。
如果原始日志中的时间字段包含毫秒、微秒或纳秒级精度,且需在日志服务中保留该精度,请参见日志采集支持纳秒精度时间戳。
Go语言时间格式(processor_gotime)
strptime时间格式(processor_strptime)
常见日志时间格式
processor_gotime扩展插件支持的常见日志时间格式请参见https://pkg.go.dev/time#pkg-constants。processor_parse_timestamp_native 原生插件与 processor_strptime 扩展插件支持的常见日志时间格式如下表所示:
-
在Linux服务器中,Logtail支持strftime函数提供的所有时间格式。即能被strftime函数格式化的日志时间字符串都能被Logtail解析并使用。
|
时间格式 |
说明 |
示例 |
|
%a |
星期的缩写。 |
Fri |
|
%A |
星期的全称。 |
Friday |
|
%b |
月份的缩写。 |
Jan |
|
%B |
月份的全称。 |
January |
|
%d |
每月第几天,十进制,范围为01~31。 |
07, 31 |
|
%f |
秒的小数部分(毫秒、微秒或纳秒) |
123 |
|
%h |
月份的缩写,等同于%b。 |
Jan |
|
%H |
小时,24小时制。 |
22 |
|
%I |
小时,12小时制。 |
11 |
|
%m |
月份,十进制,范围为01~12。 |
08 |
|
%M |
分钟,十进制,范围为00~59。 |
59 |
|
%n |
换行符。 |
换行符 |
|
%p |
AM或PM。 |
AM、PM |
|
%r |
12小时制的时间组合,等同于%I:%M:%S %p。 |
11:59:59 AM |
|
%R |
小时和分钟组合,等同于%H:%M。 |
23:59 |
|
%S |
秒数,十进制,范围为00~59。 |
59 |
|
%t |
Tab符号,制表符。 |
无 |
|
%y |
年份,十进制,不带世纪,范围为00~99。 |
04、98 |
|
%Y |
年份,十进制。 |
2004、1998 |
|
%C |
世纪,十进制,范围为00~99。 |
16 |
|
%e |
每月第几天,十进制,范围为1~31。 如果是个位数字,前面需要加空格。 |
7、31 |
|
%j |
一年中的天数,十进制,范围为001~366。 |
365 |
|
%u |
星期几,十进制,范围为1~7,1表示周一。 |
2 |
|
%U |
每年的第几周,星期天是一周的开始,范围为00~53。 |
23 |
|
%V |
每年的第几周,星期一是一周的开始,范围为01~53。 如果一月份刚开始的一周>=4天,则认为是第1周,否则认为下一个星期是第1周。 |
24 |
|
%w |
星期几,十进制,范围为0~6,0代表周日。 |
5 |
|
%W |
每年的第几周,星期一是一周的开始,范围为00~53。 |
23 |
|
%c |
标准的日期和时间。 |
Tue Nov 20 14:12:58 2020 |
|
%x |
标准的日期,不带时间。 |
Tue Nov 20 2020 |
|
%X |
标准的时间,不带日期。 |
11:59:59 |
|
%s |
Unix时间戳。 |
1476187251 |
示例
常见的时间标准、示例及对应的时间表达式如下所示。
|
示例 |
时间表达式 |
时间标准 |
|
2017-12-11 15:05:07 |
%Y-%m-%d %H:%M:%S |
自定义 |
|
[2017-12-11 15:05:07.012] |
[%Y-%m-%d %H:%M:%S.%f |
自定义 |
|
2017-12-11 15:05:07.123 |
%Y-%m-%d %H:%M:%S.%f |
自定义 |
|
02 Jan 06 15:04 MST |
%d %b %y %H:%M |
RFC822 |
|
02 Jan 06 15:04 -0700 |
%d %b %y %H:%M |
RFC822Z |
|
Monday, 02-Jan-06 15:04:05 MST |
%A, %d-%b-%y %H:%M:%S |
RFC850 |
|
Mon, 02 Jan 2006 15:04:05 MST |
%A, %d %b %Y %H:%M:%S |
RFC1123 |
|
2006-01-02T15:04:05Z07:00 |
%Y-%m-%dT%H:%M:%S |
RFC3339 |
|
2006-01-02T15:04:05.999999999Z07:00 |
%Y-%m-%dT%H:%M:%S.%f |
RFC3339Nano |
|
1637843406 |
%s |
自定义 |
|
1637843406123 |
%s |
自定义(日志服务以秒级精度处理) |
相关文档
-
通过API接口配置Logtail流水线:
-
通过控制台配置处理插件:






