You need to enable JavaScript to run this app.
导航
时间解析插件
最近更新时间:2024.11.22 11:39:51首次发布时间:2024.03.20 11:31:00

您在使用 LogCollector 采集日志时,可以使用时间解析插件解析原始日志中的时间内容,并将解析后的时间作为日志时间戳记录在服务端。

说明

LogCollector V1.0.48 及后续版本支持该插件。如何查看LogCollector版本,请参考查看软件版本

参数说明

名称

类型

是否必选

说明

field

String

待解析的字段名称。

format

String

指定时间格式,用于解析时间内容。时间格式详情请参考时间格式

说明

  • 默认情况下,配置时间转换格式时,支持配置到毫秒。如果时间转换格式中未指定毫秒级的解析方式,则毫秒部分会自动填充为 0。
  • 开启高精度时间戳功能后,配置时间转换格式时,支持配置到纳秒。如果时间转换格式中未指定纳秒级的解析方式,则纳秒部分会自动填充为 0。

time_zone

String

配置时区。默认为 LogCollector 所在服务器的时区,支持 GMT 和 UTC。例如GMT+08:00, Asia/Shanghai

extract_regex

String

用于提取时间的正则表达式。如果您只解析字段中的部分时间内容,可以通过正则表达式提取。

enable_nanosecond

Boolean

是否开启高精度时间功能。开启后,解析后的日志时间精度为纳秒级别。
默认情况下,日志时间精度为毫秒级别。

set_year

String

当日志时间中缺少年份信息时,您可以通过该参数为日志时间补充年份信息。

  • 当您期望手动设置固定的年份时,可设置为具体年份,例如 "set_year": "2024"
  • 当您期望使用系统当前时间的年份时,可设置为 "set_year": "auto"

说明

  • 设置为 "set_year": "auto" 且配置了 time_zone 时,会将系统时间按照您配置的 time_zone 进行时区转化后再获取年份。
    例如系统当前时间是伦敦时间 2023-12-31 20:00:00time_zoneGMT+08:00 ,会将时间转换为北京时区的 2024-01-01 04:00:00,再使用 2024 作为年份。
  • 设置为 "set_year": "auto" 时,在跨年时可能会因为极短的采集延迟导致年份错乱。建议在日志时间中打印年份信息。

配置示例

示例 1:未开启高精度时间戳功能

  • 经过采集模式或者其他插件处理后的键值对日志

    "message": "[2023-12-19T19:00:00,000] [INFO] java.lang.Exception: exception happened"
    
  • LogCollector 插件配置

    {
        "processors": [
            {
                "strp_time": {
                    "field": "message",
                    "format": "%Y-%m-%dT%H:%M:%S,%f",
                    "time_zone": "GMT+08:00",
                    "extract_regex": "\\[(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}:\\d{2}:\\d{2},\\d{3})\\]"
                }
            }
        ]
    }
    
  • 处理结果
    被解析后的日志时间戳为 1702983600000,即 2023-12-19 19:00:00,000。

    "message": "[2023-12-19T19:00:00,000] [INFO] java.lang.Exception: exception happened"
    Log.Time=1702983600000
    

示例 2:开启高精度时间功能

  • 经过采集模式或者其他插件处理后的键值对日志。

    "message": "[2024-05-15T12:30:19,123456789] [INFO] java.lang.Exception: exception happened"
    
  • LogCollector 插件配置

    {
        "processors": [
            {
                "strp_time": {
                    "field": "message",
                    "format": "%Y-%m-%dT%H:%M:%S,%f",
                    "time_zone": "GMT+08:00",
                    "extract_regex": "\\[(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}:\\d{2}:\\d{2},\\d{3})\\]",
                    "enable_nanosecond": true
                }
            }
        ]
    }
    
  • 处理结果
    被解析后的日志时间戳为 1715747419123,即 2024-05-15 12:30:19,123456789。

    "message": "[2024-05-15T12:30:19,123456789] [INFO] java.lang.Exception: exception happened"
    Log.Time=1715747419123
    

示例 3:自动补充日志时间中的年份信息

  • 经过采集模式或者其他处理器插件处理之后的键值对日志

    "message": "[01-01T04:00:00,123456] [INFO] java.lang.Exception: exception happened"
    
  • LogCollector 插件处理器配置

    {
        "processors": [
            {
                "strp_time": {
                    "field": "message",
                    "format": "%m-%dT%H:%M:%S,%f",
                    "time_zone": "GMT+08:00",
                    "extract_regex": "\[(\d{2}\-\d{2}T\d{2}:\d{2}:\d{2},\d{3})\]",
                    "set_year": "auto"
                }
            }
        ]
    }
    
  • 假设开始处理该条日志的系统时间是 2023-12-31 20:00:00(GMT+00:00)
    日志的检索时间为 2024-01-01 04:00:00,123

    "message": "[01-01T04:00:00,123456] [INFO] java.lang.Exception: exception happened"
    Log.Time=1704052800123