You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何抑制gRPC内部Netty产生的异常INFO日志?

抑制gRPC Netty的HTTP/1请求INFO日志解决方案

核心问题:gRPC Java默认使用Java Util Logging(JUL)输出日志,若未将JUL桥接到SLF4J,你的simpleLogger配置无法控制gRPC的日志行为;同时需要精准指定目标日志类/包的级别。

步骤1:桥接JUL到SLF4J

让gRPC的日志转发到SLF4J,遵循你的日志配置:

添加依赖

根据构建工具添加对应依赖(版本需与项目中slf4j-api一致):

  • Maven:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>你的SLF4J版本号</version>
</dependency>
  • Gradle:
implementation 'org.slf4j:jul-to-slf4j:你的SLF4J版本号'

初始化桥接

在应用启动的main方法开头添加以下代码,完成JUL到SLF4J的转发配置:

import org.slf4j.bridge.SLF4JBridgeHandler;

public class YourGrpcServerMain {
    public static void main(String[] args) {
        // 移除JUL默认处理器,避免日志重复输出
        SLF4JBridgeHandler.removeHandlersForRootLogger();
        // 安装SLF4J桥接器,将JUL日志转发到SLF4J
        SLF4JBridgeHandler.install();
        
        // 启动你的gRPC服务逻辑
        // ...
    }
}

步骤2:精准设置日志级别

通过以下两种方式之一,将io.grpc.netty相关的日志级别设为WARN,抑制INFO级的无效请求日志:

方式1:命令行参数修改

在原有JVM参数基础上,添加指定包的日志级别:

-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.com.foo.bar=info -Dorg.slf4j.simpleLogger.log.io.grpc.netty=warn

若需更精准控制,可直接指定产生日志的类:

-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.com.foo.bar=info -Dorg.slf4j.simpleLogger.log.io.grpc.netty.NettyServerTransport=warn

方式2:配置文件管理

在项目classpath下创建simplelogger.properties文件,内容如下:

org.slf4j.simpleLogger.defaultLogLevel=warn
org.slf4j.simpleLogger.log.com.foo.bar=info
org.slf4j.simpleLogger.log.io.grpc.netty=warn

这种方式更易维护,无需在命令行传递冗长参数。


内容的提问来源于stack exchange,提问作者eof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:05:04