Spring引导日志打印到Google App Engine,每个日志一行,没有元数据

Spring引导日志打印到Google App Engine,每个日志一行,没有元数据,spring,google-app-engine,logging,gradle,spring-boot,Spring,Google App Engine,Logging,Gradle,Spring Boot,我正在Docker容器中向Google Appengine部署一个SpringBoot应用程序,该应用程序按预期工作,但日志记录非常糟糕。出于某种原因,它需要将每个应该输出的日志作为单独的行打印出来。此外,日志似乎丢失了一些元数据,因为日志级别已打印出来,但Google App Engine日志查看器无法理解。您知道如何帮助控制台理解日志吗 下面是我看到的一些图片。您可以看到日志正在单独打印每一行,即使是明确显示信息、警告或错误的日志也不会在google appengine日志查看器中显示为这些

我正在Docker容器中向Google Appengine部署一个SpringBoot应用程序,该应用程序按预期工作,但日志记录非常糟糕。出于某种原因,它需要将每个应该输出的日志作为单独的行打印出来。此外,日志似乎丢失了一些元数据,因为日志级别已打印出来,但Google App Engine日志查看器无法理解。您知道如何帮助控制台理解日志吗

下面是我看到的一些图片。您可以看到日志正在单独打印每一行,即使是明确显示信息、警告或错误的日志也不会在google appengine日志查看器中显示为这些级别

以下是我的gradle项目构建文件的摘录:

apply插件:“java”
应用插件:“eclipse”
应用插件:“创意”
应用插件:“spring boot”
应用插件:“声纳跑步者”
应用插件:“appengine”
应用插件:“io.spring.dependency management”
应用插件:“战争”
罐子{
baseName='消费者'
版本='0.0.1-SNAPSHOT'
}
sourceCompatibility=1.7
targetCompatibility=1.7
存储库{
mavenCentral()
}
依赖关系{
编译(“org.springframework.boot:springbootstarteramqp”)
编译(“org.springframework.boot:springbootstarterweb”)
排除模块:“弹簧引导启动器tomcat”
编译(“org.springframework.boot:springbootstarterjetty”)
编译(“org.codehaus.jackson:jackson mapper asl:1.9.10”)
testCompile(“org.springfraework.boot:springbootstarter测试”)
}
蚀{
类路径{
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER'))
容器'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7'
}
}
任务包装器(类型:包装器){
gradleVersion='2.3'
}
托管虚拟机/自定义运行时上的状态表明,您应该将日志写入虚拟机文件系统上的某个位置:
/var/log/app\u engine/Custom\u logs
。然后,您可以阅读有关的内容,以确定是否可以让它根据日志行内容识别日志级别

如果Dockerfile的映像为
gcr.io/google\u appengine/Java compat
(未指定Dockerfile时使用的映像),则可以简单地使用标准Java
记录器
,并简单地使用
gcloud preview app deploy
命令(此命令的名称将在将来更改)根据WAR文件夹进行部署

在这种情况下,如果您适当地设置了日志级别,那么使用可能会起作用,而不是像您的输出中所看到的那样在日志行中添加预期级别的前缀

我不熟悉Spring本身,也不熟悉您如何指导它这样做,因为您似乎不是对它只是在预期日志级别前加前缀的方式负责,但至少我的回答是让您知道,这是在您使用java appengine docker映像(
gcr.io/google\u appengine/java compat
)时让开发人员控制台日志正确显示的关键