您可以使用processor_gotime插件或processor_strptime插件解析原始日志中的时间字段。本文介绍两种插件的参数说明和配置示例。

Go语言时间格式

processor_gotime插件使用Go语言时间格式解析原始日志中的时间字段,并支持将解析结果设置为日志服务中的日志时间。

  • 参数说明
    配置typeprocessor_gotimedetail说明如下表所示。
    说明 Logtail 0.16.28及以上版本支持该插件。
    参数 类型 是否必选 说明
    SourceKey String 原始字段名。
    SourceFormat String 原始时间的格式。
    SourceLocation Int 原始时间的时区。参数值为空时,表示Logtail所在主机或容器的时区。
    DestKey String 解析后的目标字段。
    DestFormat String 解析后的时间格式。
    DestLocation Int 解析后的时区。参数值为空时,表示本机时区。
    SetTime Boolean 是否将解析后的时间设置为日志时间。如果未添加该参数,则默认使用true,表示设置。
    KeepSource Boolean 是否保留原始字段。如果未添加该参数,则默认使用true,表示保留。
    NoKeyError Boolean 无匹配的原始字段时是否报错。如果未添加该参数,则默认使用true,表示报错。
    AlarmIfFail Boolean 提取失败是否告警。如果未添加该参数,则默认使用true,表示告警。
  • 示例
    原始时间(s_key字段)的格式为2006-01-02 15:04:05(东八区),现将原始时间解析为2006/01/02 15:04:05(东九区)格式,添加到d_key字段中,并设置解析结果为日志服务中的日志时间。
    • 原始日志
      "s_key":"2019-07-05 19:28:01"
    • 配置详情
      {
        "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时间格式解析日志中的时间字段,并支持将解析结果设置为日志时间。

  • 参数说明
    配置typeprocessor_strptimedetail说明如下表所示。
    说明 Logtail 0.16.28及以上版本支持该插件。
    参数 类型 是否必选 说明
    SourceKey String 原始字段名。
    Format String 原始时间的格式。
    AdjustUTCOffset Boolean 是否调整时区。如果未添加该参数,则默认使用false,表示不调整。
    UTCOffset Int 用于调整的时区偏移秒数。例如28800表示东八区。
    AlarmIfFail Boolean 提取失败时是否告警。如果未添加该参数,则默认使用true,表示进行告警。
    KeepSource Boolean 是否保留原始字段。如果未添加该参数,则默认使用true,表示保留。
    EnablePreciseTimestamp Boolean 是否提取高精度时间。如果未添加该参数,则默认使用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