我有一个应用程序(Java),它在很大程度上依赖于grpc来在不同的微服务之间进行通信。问题是在云环境中,呼叫服务通常无法到达其目标服务。 为了解决我们的问题,我们希望从grpc获得更好的调试信息。
目前我们正在从grpc获取非常粗略的日志记录信息,我们希望在套接字级别上看到日志信息(例如"与socket x ...."交谈)。 我们如何更改grpc的记录器级别?在整个系统中,我们使用 slf4j 进行日志记录,netty-logging.properties的日志记录级别为 INFO。
什么是好的水平? (我们正在考虑 TRACE )我们应该以编程方式更改每个grpc调用的级别,还是更改为配置文件?(这个文件是什么?)看起来像?)
答案 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-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>