配置日志记录编辑

winlogbeat.yml 配置文件中的 logging 部分包含用于配置日志记录输出的选项。日志记录系统可以将日志写入 syslog 或旋转日志文件。如果未明确配置日志记录,则使用文件输出。

logging.level: info
logging.to_files: true
logging.files:
  path: C:\ProgramData\winlogbeat\Logs
  name: winlogbeat
  keepfiles: 7
  permissions: 0640

除了在配置文件中设置日志记录选项外,您还可以从命令行修改日志记录输出配置。请参阅 命令参考

配置选项编辑

您可以在 winlogbeat.yml 配置文件中的 logging 部分指定以下选项

logging.to_stderr编辑

如果为 true,则将所有日志记录输出写入标准错误输出。这等同于使用 -e 命令行选项。

logging.to_syslog编辑

如果为 true,则将所有日志记录输出写入 syslog。

此选项在 Windows 上不受支持。

logging.to_eventlog编辑

如果为 true,则将所有日志记录输出写入 Windows 事件日志。

logging.to_files编辑

如果为 true,则将所有日志记录输出写入文件。当日志文件大小限制达到时,日志文件会自动旋转。

Winlogbeat 仅在有日志记录输出时才创建日志文件。例如,如果您将日志 level 设置为 error,并且没有错误,则日志目录中将没有日志文件。

logging.level编辑

最低日志级别。可以是 debuginfowarningerror。默认日志级别为 info

debug
记录调试消息,包括所有已刷新事件的详细打印输出。还会记录信息性消息、警告、错误和严重错误。当日志级别为 debug 时,您可以指定 selectors 列表以显示特定组件的调试消息。如果未指定选择器,则使用 * 选择器以显示所有组件的调试消息。
info
记录信息性消息,包括已发布事件的数量。还会记录所有警告、错误或严重错误。
warning
记录警告、错误和严重错误。
error
记录错误和严重错误。

logging.selectors编辑

不同 Winlogbeat 组件使用的调试专用选择器标签列表。使用 * 为所有组件启用调试输出。使用 publisher 显示与事件发布相关的调试消息。

可用选择器列表可能会在不同版本之间发生变化,因此请避免创建依赖于特定选择器的测试。

要查看哪些选择器可用,请在调试模式下运行 Winlogbeat(在配置中将 logging.level: debug 设置为 debug)。选择器名称将出现在日志级别之后,并用方括号括起来。

要配置多个选择器,请使用以下 YAML 列表语法

logging.selectors: [ harvester, input ]

要在命令行中覆盖选择器,请使用 -d 全局标志(-d 还会设置调试日志级别)。有关更多信息,请参阅 命令参考

logging.metrics.enabled编辑

默认情况下,Winlogbeat 会定期记录其在上次周期内发生更改的内部指标。对于每个发生更改的指标,都会记录与周期开始时的值的增量。此外,在关闭时,还会记录所有非零内部指标的总值。将此设置为 false 以禁用此行为。默认值为 true。

这是一个示例日志行

2017-12-17T19:17:42.667-0500    INFO    [metrics]       log/log.go:110  Non-zero metrics in the last 30s: beat.info.uptime.ms=30004 beat.memstats.gc_next=5046416

请注意,我们目前不提供对内部指标的向后兼容性保证,因此它们也不在文档中。

logging.metrics.period编辑

记录内部指标的周期。默认值为 30 秒。

logging.metrics.namespaces编辑

要在日志中报告的指标命名空间列表。默认值为 [stats]stats 包含一般的 Beat 指标。 datasetinputs 可能存在于某些 Beat 中,并包含模块或输入指标。

logging.files.path编辑

写入日志文件的目录。默认值为日志路径。有关详细信息,请参阅 目录布局 部分。

logging.files.name编辑

写入日志的文件名。默认值为 winlogbeat

logging.files.rotateeverybytes编辑

日志文件的最大大小。如果达到限制,则会生成一个新的日志文件。默认大小限制为 10485760(10 MB)。

logging.files.keepfiles编辑

要保留在磁盘上的最近旋转日志文件的数量。在日志旋转期间,会删除较旧的文件。默认值为 7。 keepfiles 选项必须在 2 到 1024 个文件范围内。

logging.files.permissions编辑

在旋转日志文件时要应用的权限掩码。默认值为 0600。 permissions 选项必须是有效的 Unix 风格文件权限掩码,以八进制表示。在 Go 中,八进制表示的数字必须以 0 开头。

允许的最宽松的掩码为 0640。如果通过此设置指定了更高的权限掩码,它将受到 0027 umask 的约束。

此选项在 Windows 上不受支持。

示例

  • 0640:向文件所有者授予读写权限,并向与文件关联的组成员授予读权限。
  • 0600:向文件所有者授予读写权限,并向其他所有用户授予无访问权限。

logging.files.interval编辑

除了基于大小的旋转之外,还启用按时间间隔旋转日志文件。间隔必须至少为 1 秒。值 1m、1h、24h、7*24h、30*24h 和 365*24h 与本地系统时钟报告的分钟、小时、天、周、月和年对齐。所有其他间隔都是从 Unix 时间戳计算的。默认情况下处于禁用状态。

logging.files.rotateonstartup编辑

如果日志文件在启动时已存在,则立即将其旋转,并开始写入新的文件,而不是追加到现有的文件。默认值为 true。

logging.files.redirect_stderr [预览] 此功能处于技术预览阶段,可能在将来版本中发生更改或被移除。Elastic 将尽力解决任何问题,但技术预览中的功能不受正式 GA 功能的支持 SLA 约束。 编辑

如果为 true,则打印到 Winlogbeat 的标准错误输出的诊断消息也会被记录到日志文件中。这在 Winlogbeat 意外终止的情况下很有用,因为 Go 的运行时检测到错误,但日志文件中没有诊断信息。此功能仅在将日志记录到文件时可用(logging.to_files 为 true)。默认情况下处于禁用状态。

日志记录格式编辑

对于每种日志记录输出,日志记录格式通常相同。唯一的例外是 syslog 输出,其中时间戳未包含在消息中,因为 syslog 会添加它自己的时间戳。

每条日志消息包含以下部分

  • ISO8601 格式的时间戳
  • 级别
  • 包含在方括号中的记录器名称(可选)
  • 调用者的文件名和行号
  • 消息
  • 以 JSON 编码的结构化数据(可选)

以下是一些示例

2017-12-17T18:54:16.241-0500 INFO logp/core_test.go:13 未命名全局记录器

2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:16 some message

2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:19 some message {"x": 1}