在使用Logtail采集日志时,可以使用processor_gotime插件或processor_strptime插件解析原始日志中的时间字段。本文介绍两种插件的参数说明和配置示例。
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail采集配置时,添加插件配置。具体操作,请参见处理插件概述。
Go语言时间格式
processor_gotime插件使用Go语言时间格式解析原始日志中的时间字段,并支持将解析结果设置为日志服务中的日志时间。
- Logtail 0.16.28及以上版本支持processor_gotime插件。 
- 表单配置方式:采集文本日志和容器标准输出时可用。 
- JSON配置方式:采集文本日志时不可用。 
表单配置方式
- 参数说明 - 配置处理插件类型为提取日志时间(Go语言时间格式)。  - 相关参数说明如下表所示。 - 参数 - 说明 - 原始时间字段 - 原始字段名。 - 原始时间格式 - 原始时间的格式。 - 原始时间时区 - 原始时间的时区。选择机器时区时,表示Logtail所在主机或容器的时区。 - 结果时间字段 - 解析后的目标字段。 - 结果时间格式 - 解析后的时间格式。 - 自定义结果时间时区 - 解析后的时区。选择机器时区时,表示本机的时区。 - 高级参数>设为日志时间 - 选中该选项后,系统会将解析后的时间设置为日志时间。 - 高级参数>保留原始字段 - 选中该选项后,解析后的日志中将保留原始字段。 - 高级参数>原始字段缺失报错 - 选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。 - 高级参数>提取失败报错 - 选中该选项后,如果提取日志时间失败,系统将报错。 
- 示例 - 原始时间( - s_key字段)的格式为- 2006-01-02 15:04:05(东八区),现将原始时间解析为- 2006/01/02 15:04:05(东九区)格式,添加到- d_key字段中,并设置解析结果为日志服务中的日志时间。- 原始日志 - "s_key":"2022-07-05 19:28:01"
- Logtail插件处理配置  
- 处理结果 - "s_key":"2022-07-05 19:28:01" "d_key":"2022/07/05 20:28:01"
 
JSON配置方式
- 参数说明 - 配置type为processor_gotime,detail说明如下表所示。 - 参数 - 类型 - 是否必选 - 说明 - SourceKey - String - 是 - 原始字段名。 - SourceFormat - String - 是 - 原始时间的格式。 - SourceLocation - Int - 是 - 原始时间的时区。参数值为空时,表示Logtail所在主机或容器的时区。 - DestKey - String - 是 - 解析后的目标字段。 - DestFormat - String - 是 - 解析后的时间格式。 - DestLocation - Int - 否 - 解析后的时区。参数值为空时,表示本机时区。 - SetTime - Boolean - 否 - 是否将解析后的时间设置为日志时间。 - true(默认值):是 
- false:否 
 - KeepSource - Boolean - 否 - 被解析后的日志中是否保留原始字段。 - true(默认值):保留 
- false:不保留 
 - NoKeyError - Boolean - 否 - 原始日志中无您所指定的原始字段时,系统是否报错。 - true(默认值):报错 
- false:不报错 
 - AlarmIfFail - Boolean - 否 - 提取日志时间失败,系统是否报错。 - true(默认值):报错 
- false:不报错 
 
- 示例 - 原始时间(s_key字段)的格式为 - 2006-01-02 15:04:05(东八区),现将原始时间解析为- 2006/01/02 15:04:05(东九区)格式,添加到d_key字段中,并设置解析结果为日志服务中的日志时间。- 原始日志 - "s_key":"2019-07-05 19:28:01"
- Logtail插件处理配置 - { "processors":[ { "type":"processor_gotime", "detail": { "SourceKey": "s_key", "SourceFormat":"2006-01-02 15:04:05", "SourceLocation":8, "DestKey":"d_key", "DestFormat":"2006/01/02 15:04:05", "DestLocation":9, "SetTime": true, "KeepSource": true, "NoKeyError": true, "AlarmIfFail": true } } ] }
- 处理结果 - "s_key":"2019-07-05 19:28:01" "d_key":"2019/07/05 20:28:01"
 
strptime时间格式
processor_strptime插件使用Linux strptime时间格式解析日志中的时间字段,并支持将解析结果设置为日志时间。
Logtail 0.16.28及以上版本支持processor_strptime插件。
表单配置方式
- 参数说明 - 配置处理器类型为提取日志时间(strptime时间格式),相关参数说明如下表所示。 - 参数 - 说明 - 原始字段 - 原始字段名。 - 原始时间格式 - 原始时间的格式。 - 保留原始字段 - 选中该选项后,被解析后的日志中将保留原始字段。 - 提取失败报错 - 选中该选项后,如果提取日志时间失败,系统将报错。 - 进行时间偏移 - 选中该选项后,您可以设置时间偏移秒数。 - 时间偏移秒数 - 时间偏移秒数。例如28800表示东八区,-3600代表西一区。 
- 配置示例 - 将 - %Y/%m/%d %H:%M:%S格式的原始时间(- log_time字段的值)解析为对应的日志时间,时区使用机器所在时区。假设时区为东八区。- 原始日志 - "log_time":"2022/01/02 12:59:59"
- Logtail插件处理配置  
- 处理结果 - "log_time":"2022/01/02 12:59:59" Log.Time = 1451710799
 
- 常见的时间表达式 说明- processor_strptime插件支持%f格式解析,表示秒的小数部分,最高精度为纳秒。- 示例 - 时间表达式 - 2016/01/02 12:59:59 - %Y/%m/%d %H:%M:%S - 2016/01/02 12:59:59.1 - %Y/%m/%d %H:%M:%S.%f - 2016/01/02 12:59:59.987654321 +0700 (UTC) - %Y/%m/%d %H:%M:%S.%f %z (%Z) - 2016/Jan/02 12:59:59,123456 - %Y/%b/%d %H:%M:%S,%f - 2019-07-15T04:16:47:123Z - %Y-%m-%dT%H:%M:%S:%f 
JSON配置方式
- 参数说明 - 配置type为processor_strptime,detail说明如下表所示。 - 参数 - 类型 - 是否必选 - 说明 - SourceKey - String - 是 - 原始字段名。 - Format - String - 是 - 原始时间的格式。 - AdjustUTCOffset - Boolean - 否 - 是否调整时区。 - true:是。 
- false(默认值):否 
 - UTCOffset - Int - 否 - 用于调整的时区偏移秒数。例如28800表示东八区。 - AlarmIfFail - Boolean - 否 - 提取日志失败时,系统是否报错。 - true(默认值):报错。 
- false:不报错。 
 - KeepSource - Boolean - 否 - 被解析后的日志中,是否保留原始字段。 - true(默认值):保留。 
- false:不保留。 
 - EnablePreciseTimestamp - Boolean - 否 - 是否提取高精度时间。 - true:是。 
- false(默认值):否。 
 - 设置为true后,该插件会将SourceKey参数对应的字段值解析为毫秒级别的时间戳,并存入PreciseTimestampKey参照中对应的字段。更多信息,请参见Logtail日志采集支持高精度时间戳。 重要- 设置该参数为true前,请确保SourceKey参数对应的字段值(原始时间)支持相应的时间精度(ms、us或ns)。 
- 仅Logtail 1.0.32及以上版本支持。 
 - PreciseTimestampKey - String - 否 - 保存高精度时间戳的字段。默认值为precise_timestamp字段。 - PreciseTimestampUnit - String - 否 - 高精度时间戳的单位。默认值为ms。取值包括ms(毫秒)、us(微秒)、ns(纳秒)。 
- 示例 - 将 - %Y/%m/%d %H:%M:%S格式的原始时间(log_time字段的值)解析为对应的日志时间,时区使用机器所在时区。- 示例1:假设时区为东八区。 - 原始日志 - "log_time":"2016/01/02 12:59:59"
- Logtail插件处理配置 - { "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S" } } ] }
- 处理结果 - "log_time":"2016/01/02 12:59:59" Log.Time = 1451710799
 
- 示例2:假设时区为东七区。 - 原始日志 - "log_time":"2016/01/02 12:59:59"
- Logtail插件处理配置 - { "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S", "AdjustUTCOffset": true, "UTCOffset": 25200 } } ] }
- 处理结果 - "log_time":"2016/01/02 12:59:59" Log.Time = 1451714399
 
- 示例3:假设时区为东七区。 - 原始日志 - "log_time":"2016/01/02 12:59:59.123"
- Logtail插件处理配置 - { "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S.%f", "EnablePreciseTimestamp": true } } ] }
- 处理结果 - "log_time":"2016/01/02 12:59:59.123" "precise_timestamp": 1451714399123 Log.Time = 1451714399
 
 
- 常见的时间表达式 说明- processor_strptime插件支持%f格式解析,表示秒的小数部分,最高精度为纳秒。 - 示例 - 时间表达式 - 2016/01/02 12:59:59 - %Y/%m/%d %H:%M:%S - 2016/01/02 12:59:59.1 - %Y/%m/%d %H:%M:%S.%f - 2016/01/02 12:59:59.987654321 +0700 (UTC) - %Y/%m/%d %H:%M:%S.%f %z (%Z) - 2016/Jan/02 12:59:59,123456 - %Y/%b/%d %H:%M:%S,%f - 2019-07-15T04:16:47:123Z - %Y-%m-%dT%H:%M:%S:%f 
相关文档
- 通过API接口配置Logtail流水线: 
- 通过控制台配置处理插件: