吉安做网站公司,网站怎么重建,中企动力邮箱登陆首页,网络策划书范文ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。
编码器以 JSON 格式记录日志#xff0c;并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。
默认情况下#xff0c;会添…ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。
编码器以 JSON 格式记录日志并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。
默认情况下会添加以下字段
{log.level: info,timestamp: 2020-09-13T10:48:03.000Z,message: some logging info,ecs.version: 1.6.0
} 安装
将包添加到你的 go.mod 文件中
go.mod
module zerolog-logging
require go.elastic.co/ecszap master
require go.uber.org/zap master
我们使用如下的命令来下载包
go get go.elastic.co/ecszap
go get go.uber.org/zap 配置
设置默认记录器。例如
encoderConfig : ecszap.NewDefaultEncoderConfig()
core : ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)
logger : zap.New(core, zap.AddCaller())
你可以自定义 ECS 记录器。例如
encoderConfig : ecszap.EncoderConfig{EncodeName: customNameEncoder,EncodeLevel: zapcore.CapitalLevelEncoder,EncodeDuration: zapcore.MillisDurationEncoder,EncodeCaller: ecszap.FullCallerEncoder,
}
core : ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)
logger : zap.New(core, zap.AddCaller()) 示例 使用结构化日志记录
zap1.go
package mainimport (errorsosgo.elastic.co/ecszapgo.uber.org/zap
)func main() {encoderConfig : ecszap.NewDefaultEncoderConfig()core : ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)logger : zap.New(core, zap.AddCaller())logger logger.With(zap.String(custom, foo))logger logger.Named(mylogger)// Use strongly typed Field valueslogger.Info(some logging info,zap.Int(count, 17),zap.Error(errors.New(boom)))
}我们可以使用如下的方法来运行上面的应用
go run zap1.go | jq . Log errors
zap_error.go
package mainimport (errorsospkgerrors github.com/pkg/errorsgo.elastic.co/ecszapgo.uber.org/zap
)func main() {encoderConfig : ecszap.NewDefaultEncoderConfig()core : ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)logger : zap.New(core, zap.AddCaller())err : errors.New(boom)logger.Error(some error, zap.Error(pkgerrors.Wrap(err, crash)))
}我们使用如下的命令来运行应用
go run zap_error.go | jq . 使用 sugar logger
zap_sugar.go
package mainimport (osgo.elastic.co/ecszapgo.uber.org/zap
)func main() {encoderConfig : ecszap.NewDefaultEncoderConfig()core : ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)logger : zap.New(core, zap.AddCaller())sugar : logger.Sugar()sugar.Infow(some logging info,foo, bar,count, 17,)
}我们使用如下的命令来运行
go run zap_sugar.go | jq . 把日志写入到 Elasticsearch
按照 Filebeat 快速入门将以下配置添加到你的 filebeat.yaml 文件中。 Filebeat 7.16
filebeat.yaml
filebeat.inputs:
- type: filestream # 1paths: /path/to/logs.jsonparsers:- ndjson:overwrite_keys: true # 2add_error_key: true # 3expand_keys: true # 4processors: # 5- add_host_metadata: ~- add_cloud_metadata: ~- add_docker_metadata: ~- add_kubernetes_metadata: ~
使用 filestream 输入从活动日志文件中读取行。如果发生冲突解码的 JSON 对象的值将覆盖 Filebeat 通常添加的字段type、source、offset 等。如果发生 JSON 解组错误Filebeat 将添加 “error.message” 和 “error.type: json” 键。Filebeat 将递归地从解码的 JSON 中去掉点键并将其扩展为分层对象结构。Processors 可增强你的数据。请参阅 processors 以了解更多信息。 Filebeat 7.16
filebeat.yaml
filebeat.inputs:
- type: logpaths: /path/to/logs.jsonjson.keys_under_root: truejson.overwrite_keys: truejson.add_error_key: truejson.expand_keys: trueprocessors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~