我有一个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文件中。我是否缺少任何配置?请指教。预先感谢!
答案 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>