能否配置Google Flogger省略日志CONTEXT?FluentLogger限流冗余输出如何关闭?
关于FluentLogger限流冗余输出与Google Flogger CONTEXT配置的解决方案
一、关闭FluentLogger的限流冗余输出
- 可以通过两种方式屏蔽这类冗余日志:
- 日志框架过滤:在SLF4J、Logback等日志框架的配置里添加过滤规则,直接拦截包含指定内容的日志。比如Logback的
logback.xml中加入:<filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>message.contains("messages have been saved destined for corp")</expression> </evaluator> <OnMatch>DENY</OnMatch> </filter> - FluentLogger参数配置:如果对应版本的FluentLogger提供了限流日志开关(比如
disableRateLimitLogging),直接将该参数设为true即可,具体参数名需参考对应版本的文档。
- 日志框架过滤:在SLF4J、Logback等日志框架的配置里添加过滤规则,直接拦截包含指定内容的日志。比如Logback的
二、配置Google Flogger移除日志中的CONTEXT
- 有两种可行方案:
- 自定义日志格式化器:继承
GoogleStyleFormatter并重写format方法,剔除CONTEXT内容。示例代码:
之后在初始化Flogger时指定使用该格式化器:public class CustomFloggerFormatter extends GoogleStyleFormatter { @Override public String format(LogEntry logEntry, MetadataProcessor metadataProcessor) { String originalLog = super.format(logEntry, metadataProcessor); // 移除所有[CONTEXT ...]格式的内容 return originalLog.replaceAll("\\[CONTEXT.*?\\]", ""); } }FluentLogger.setFormatter(new CustomFloggerFormatter())。 - 禁用LogContext自动附加:初始化Flogger时设置空的上下文提供者,阻止CONTEXT生成:
LogContext.setContextProvider(NoOpContextProvider.getInstance());
- 自定义日志格式化器:继承
内容的提问来源于stack exchange,提问作者stanlick
相关产品推荐
相关产品推荐

