Google flogger 是否可以配置为忽略包含在日志中的上下文

问题描述 投票:0回答:1

我们在 FluentLogger 中使用速率限制支持,这导致我们的日志消息中包含虚假输出

发往公司的消息已保存 [CONTEXTratelimit_period="30 SECONDS [skipped: 6]" ]

有办法关掉它吗?

java logging fluent
1个回答
0
投票

一般来说,我不建议完全关闭上下文段(您无法控制的库中的某些代码可能希望使用它提供有用的数据)。

Google 内部有一个可自定义的格式化程序,我认为它可以满足您的需求。您可以尝试提出问题并要求他们将其开源(我不再在 Google 工作,因此无法直接提供帮助)。

如果做不到这一点,用替代方案替换默认后端实际上并不困难,该替代方案使用不同的“元数据处理器”,并且可以配置为忽略某些元数据键。

如果您使用 JDK 后端,您将能够轻松替换

SimpleBackendFactory
并拥有您自己的
SimpleLoggerBackend
SimpleLogRecord
版本来配合它。

在您的

SimpleLogRecord
版本中,您将重载该方法:

  protected LogMessageFormatter getLogMessageFormatter()

并返回自定义格式化程序。

我首先在

SimpleMessageFormatter
中查看以下方法:

public static LogMessageFormatter getSimpleFormatterIgnoring(MetadataKey<?>... extraIgnoredKeys)

您可以传递您想要忽略的键列表(在您的情况下,键位于

LogContext.Keys.XXX

当我编写 Flogger 时,我总是设想人们想要制作自己的自定义后端,因此我没有尝试添加数百个标志和选项来自定义事物,而是制作了很多帮助器类,并使其可以轻松替换默认值(简单)后端实现(如果它们不适合您的需求)。

© www.soinside.com 2019 - 2024. All rights reserved.