grpc记录器级别

时间:2018-05-08 23:56:04

标签: logging netty slf4j grpc-java

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

目前我们正在从grpc获取非常粗略的日志记录信息,我们希望在套接字级别上看到日志信息(例如"与socket x ...."交谈)。 我们如何更改grpc的记录器级别?在整个系统中,我们使用 slf4j 进行日志记录,netty-logging.properties的日志记录级别为 INFO。

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

2 个答案:

答案 0 :(得分:1)

gRPC Java日志输出通过JDK的内置java.util.logging类(搜索" java.util.logging"将出现大量有关配置这些内容的教程和StackOverflow问题日志级别)。可以通过编程方式设置日志级别,但从配置文件加载可以更好地满足典型用法。以下示例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

答案 1 :(得分:0)

您可以使用google-cloud-logging-logbackmaven-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>