在GCP App引擎上找不到logback xml文件异常

时间:2019-02-10 07:16:37

标签: java spring-boot google-app-engine google-cloud-platform logback

我有一个Spring Boot应用程序。对于日志记录系统,我正在使用logback。包装类型为WAR而不是JAR。 要使用登录文件,我在application.properties中将参数指定为:

logging.config=file:./src/main/resources/logback.xml

此配置在本地系统上正常运行,即能够找到回传文件,并且在指定位置生成了日志。但是问题是,一旦我将此代码部署到GCP App引擎,就会遇到以下错误:

java.lang.RuntimeException: java.lang.IllegalStateException: java.io.FileNotFoundException: /base/data/home/apps/s~location-finder-231303/1.416014753384786654/logback.xml (No such file or directory)
    at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:68)

因此,登录文件已经捆绑在.war文件中。我是否缺少任何配置?请指教。预先感谢!

1 个答案:

答案 0 :(得分:1)

根据本文档Configuration Files ,与WAR文件有关的所有文件都将放入/ WEB-INF /文件夹中。

  

Java应用程序不能使用任何用于写入文件系统的类,例如java.io.FileWriter。应用程序可以使用诸如java.io.FileReader之类的文件系统读取其自身的文件。应用程序还可以访问自己的文件作为“资源”,例如使用Class.getResource()或ServletContext.getResource()。

     

应用程序可以通过文件系统访问仅被视为“资源文件”的文件。默认情况下,WAR中的所有文件都是“资源文件”。您可以使用appengine-web.xml文件从此集合中排除文件。

因此,您可以从application.properties中删除设置logging.config(应读取war文件中的默认路径),也可以上载logback.xml并将路径更改为./WEB-INF/logback.xml。在src / main / webapp / WEB-INF / appengine-web.xml内,添加一个指向新logback.xml文件的配置。例如:

<property name="java.util.logging.config.file" value="WEB-INF/classes/logback.xml"/>

在此示例SpringBoot HelloWorld for App Engine Standard (Java 8)中,您可以获得更多信息。

  

内存不足错误

     

使用Spring Boot> = 1.5.6时,启动时可能会遇到内存不足错误。请按照以下说明解决此问题:

     

在src / main / resources内部,添加带有以下内容的logging.properties文件:

.level = INFO
  

在src / main / webapp / WEB-INF / appengine-web.xml内,添加一个指向新logging.properties文件的配置。

<system-properties>
  <property name="java.util.logging.config.file" value="WEB-INF/classes   /logging.properties"/>
</system-properties>