开始使用

编辑

步骤 1:安装

编辑

将软件包添加到您的 go.mod 文件中

require go.elastic.co/ecslogrus master

步骤 2:配置

编辑

设置一个默认的日志记录器。例如

log := logrus.New()
log.SetFormatter(&ecslogrus.Formatter{})

示例

编辑

使用结构化日志记录

编辑
// Add custom fields.
log.WithError(errors.New("boom!")).WithField("custom", "foo").Info("hello")

上面的示例产生以下日志输出

{
  "@timestamp": "2021-01-20T11:12:43.061+0800",
  "custom":"foo",
  "ecs.version": "1.6.0",
  "error": {
    "message": "boom!"
  },
  "log.level": "info",
  "message":"hello"
}

将自定义字段嵌套在 "labels" 下

编辑

为了完全符合 ECS 标准,自定义字段应嵌套在 "labels" 对象中。

log := logrus.New()
log.SetFormatter(&ecslogrus.Formatter{
    DataKey: "labels",
})
log.WithError(errors.New("boom!")).WithField("custom", "foo").Info("hello")

上面的示例产生以下日志输出

{
  "@timestamp": "2021-01-20T11:12:43.061+0800",
  "ecs.version": "1.6.0",
  "error": {
    "message": "boom!"
  },
  "labels": {
    "custom": "foo"
  },
  "log.level": "info",
  "message":"hello"
}

报告调用者信息

编辑
log := logrus.New()
log.SetFormatter(&ecslogrus.Formatter{})
log.ReportCaller = true
log.Info("hello")

上面的示例产生以下日志输出

{
  "@timestamp": "2021-01-20T11:12:43.061+0800",
  "ecs.version": "1.6.0",
  "log.level": "info",
  "log.origin.file.line": 48,
  "log.origin.file.name": "/path/to/example_test.go",
  "log.origin.function": "go.elastic.co/ecslogrus_test.ExampleFoo",
  "message":"hello"
}

步骤 3:配置 Filebeat

编辑
  1. 请遵循 Filebeat 快速入门
  2. 将以下配置添加到您的 filebeat.yaml 文件中。

对于 Filebeat 7.16+

filebeat.yaml.

filebeat.inputs:
- type: filestream 
  paths: /path/to/logs.json
  parsers:
    - ndjson:
      overwrite_keys: true 
      add_error_key: true 
      expand_keys: true 

processors: 
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

使用 filestream 输入从活动日志文件中读取行。

如果发生冲突,解码后的 JSON 对象中的值将覆盖 Filebeat 通常添加的字段(类型、源、偏移量等)。

如果发生 JSON 反序列化错误,Filebeat 将添加 "error.message" 和 "error.type: json" 键。

Filebeat 将递归地删除解码的 JSON 中的键的点,并将它们展开为分层对象结构。

处理器增强您的数据。请参阅 处理器 以了解更多信息。

对于 Filebeat < 7.16

filebeat.yaml.

filebeat.inputs:
- type: log
  paths: /path/to/logs.json
  json.keys_under_root: true
  json.overwrite_keys: true
  json.add_error_key: true
  json.expand_keys: true

processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~

有关更多信息,请参阅 Filebeat 参考