Go时间格式解析
版本
配置参数
参数
类型
是否必选
说明
SourceKey
String
是
原始字段名。
SourceFormat
String
是
原始时间的格式。
SourceLocation
Int
否
原始时间的时区。参数值为空时,表示iLogtail所在主机或容器的时区。
DestKey
String
是
解析后的目标字段。
DestFormat
String
是
解析后的时间格式。
DestLocation
Int
否
解析后的时区。参数值为空时,表示本机时区。
SetTime
Boolean
否
是否将解析后的时间设置为日志时间。true(默认值):是。false:否。
KeepSource
Boolean
否
被解析后的日志中是否保留原始字段。true(默认值):保留。false:不保留。
NoKeyError
Boolean
否
原始日志中无您所指定的原始字段时,系统是否报错。true(默认值):报错。false:不报错。
AlarmIfFail
Boolean
否
提取日志时间失败,系统是否报错。true(默认值):报错。false:不报错。
注意 SourceFormat 和 DestFormat 的格式需要符合 Go 时间中的 layout。Go 中采用基于规则的方法对时间格式进行解析,例如,时间格式中 "1" 的时间单位为月份,"15" 的时间单位为小时。因此,为了避免解析失败,推荐选择 Go 中的时间原点 "2006-01-02 15:04:05" 作为 SourceFormat 和 DestFormat 的样例时间。 或者采用以下的标准时间格式:
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
// Handy time stamps.
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
DateTime = "2006-01-02 15:04:05"
DateOnly = "2006-01-02"
TimeOnly = "15:04:05"
)
样例
采集当前路径下的simple.log
文件,根据指定的配置选项提取日志信息。
enable: true
inputs:
- Type: file_log
LogPath: .
FilePattern: simple.log
processors:
- Type: processor_gotime
SourceKey: "content"
SourceFormat: "2006-01-02 15:04:05"
SourceLocation: 8
DestKey: "d_key"
DestFormat: "2006/01/02 15:04:05"
DestLocation: 9
flushers:
- Type: flusher_stdout
OnlyStdout: true
输入
echo "2006-01-02 15:04:05" >> simple.log
输出
{
"content":"2006-01-02 15:04:05",
"d_key":"2006/01/02 16:04:05"
}
Last updated