一旦我开始在日志中使用谷歌的 LoggingAppender 日志,日志就会在云运行中消失?



我不知道如何调试,因为没有错误。我有这个logback文件,但这让我的cloudrun实例的所有日志都消失了,除了系统之外。。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="30 seconds" debug="true">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
<!-- Optional : filter logs at or above a level -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
</appender>
<appender name="ASYNC-SERVERLOG" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="CLOUD" />
</appender>
<!-- TBD for later use for apps that use log4jdbc it doesn't hurt apps that
don't use it -->
<logger name="jdbc.sqlonly" level="INFO" />
<logger name="jdbc.sqltiming" level="WARN" />
<logger name="jdbc.audit" level="WARN" />
<logger name="jdbc.resultset" level="WARN" />
<logger name="jdbc.connection" level="WARN" />
<root>
<level value="INFO" />
<appender-ref ref="ASYNC-SERVERLOG" />
</root>
</configuration>

你知道为什么日志记录停止工作,或者日志记录要去哪里吗?既然我把日志记录改成了这个,日志记录似乎就失效了:(.

我也试过这篇文章,它记录到ConsoleAppender,但没有任何东西以json格式显示,尽管它为我所做的每个日志语句做了一行,这真的很好

GKE&Stackdriver:Java日志记录格式?

然后我尝试了使用FileAppender 的方法

如何将我的java应用程序日志事件映射到GCP Felexible非兼容应用程序引擎中相应的云日志事件级别?

我这次的日志是

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/app.log</file>
<append>true</append>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.orderlyhealth.GCPCloudLoggingJSONLayout">
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg</pattern>
</layout>
</encoder>
</appender>
<appender name="ASYNC-SERVERLOG" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE" />
</appender>

有什么想法吗?

文档中的Java日志记录说明应该有助于:https://cloud.google.com/run/docs/logging#run_manual_logging-java

在Cloud Run中,输出到Stdout和Stderr会转发到Stackdriver。记录在文件中的日志将丢失。

我不确定ASYNC-SERVERLOG附加程序的含义,但在Cloud Run上,只有CPU可用于在处理请求时处理和发送日志,因此,如果有东西异步发送日志,它将只在该请求或未来到达同一容器实例的请求期间工作。

最新更新