【问题标题】:grpc Logger levelgrpc 记录器级别
【发布时间】:2018-05-08 23:56:03
【问题描述】:

我有一个应用程序 (Java),它严重依赖 grpc 在不同的微服务之间进行通信。问题是在云环境中,调用服务经常无法到达它们的目标服务。 为了解决我们的问题,我们希望从 grpc 获得更好的调试信息。

目前,我们从 grpc 获得了非常粗略的日志信息,我们希望查看套接字级别的日志信息(例如“与套接字 x 对话 ....”)。 我们如何更改 grpc 的记录器级别?在整个系统中,我们使用 slf4j 进行日志记录,而我们的 netty-logging.properties 的日志记录级别为 INFO。

什么是好的水平? (我们正在考虑 TRACE)并且我们应该以编程方式在每次 grpc 调用时更改级别还是在 配置文件 中更改级别?(这个文件会是什么?看起来像?)

【问题讨论】:

    标签: logging netty slf4j grpc-java


    【解决方案1】:

    gRPC Java 日志通过 JDK 的内置 java.util.logging 类输出(搜索“java.util.logging”会出现很多关于配置这些日志级别的教程和 * 问题)。日志级别可以通过编程方式设置,但典型用法最好从配置文件加载。以下示例 logging.properties 将打开详细 gRPC 日志记录:

    handlers=java.util.logging.ConsoleHandler
    io.grpc.level=FINE
    java.util.logging.ConsoleHandler.level=FINE
    java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
    

    您需要提供此文件的位置作为 JVM 标志,例如,使用命令行标志 -Djava.util.logging.config.file=logging.properties

    【讨论】:

      【解决方案2】:

      您可以使用google-cloud-logging-logback,版本可在maven-central获得

      <!-- add to pom.xml dependencies -->
      
      <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>google-cloud-logging-logback</artifactId>
          <version>0.80.0-alpha</version>
      </dependency>
      

      然后在src/main/resources/logback.xml 中开启调试或其他您想要的日志记录级别,

      <configuration>                                                                                        
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">                               
              <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>                                
          </appender>                                                                                        
      
          <root level="DEBUG">                                                                               
              <appender-ref ref="STDOUT" />                                                                  
          </root>                                                                                            
      </configuration> 
      

      【讨论】: