【发布时间】:2023-01-03 09:49:30
【问题描述】:
我已经使用 Spring Boot 设置了 logback。 当我使用“mvn package”时,它会在 logback-spring.xml 中指定的指定位置创建日志文件 然而,当我将战争部署到 Tomcat 管理器上时,我在 tomcat 日志文件中收到以下错误。
02-Jan-2023 19:36:45.008 INFO [http-nio-8080-exec-100] org.apache.catalina.core.ApplicationContext.log HTMLManager: start: Starting web application '/springapp'
02-Jan-2023 19:36:47.131 SEVERE [http-nio-8080-exec-100] org.apache.catalina.core.ApplicationContext.log HTMLManager: Error starting [/springapp]
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/springapp]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
...
...
...
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - openFile(springapp.log,true) call failed. java.io.FileNotFoundException: springapp.log (Permission denied)
at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:344)
...
...
...
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5211)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 35 more
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - openFile(springapp.log,true) call failed. java.io.FileNotFoundException: springapp.log (Permission denied)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179)
at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80)
at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:329)
... 56 more
02-Jan-2023 19:36:47.131 INFO [http-nio-8080-exec-100] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost
Tomcat 安装在 /opt/tomcat/apache-tomcat-version/ 我的日志文件目标是 /opt/tomcat/applogs/ 具有权限
drwxr-xr-x 9 tomcat tomcat 4096 Dec 8 14:02 apache-tomcat-9.0.70
drwxrwxrwx 2 tomcat tomcat 4096 Jan 2 19:35 applogs
我试过将 user:groups 更改为 {whoami}:{whoami}、root:root 等,但 tomcat 管理器不会启动 war 部署
FAIL - Application at context path [/springapp] could not be started
FAIL - Encountered exception [org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/springapp]]]
我知道已经创建的日志来自 spring boot,与 tomcat 无关,而且我也知道 tomcat 出于安全目的需要专门的用户,但此时我不知道该怎么做。
【问题讨论】:
标签: java spring spring-boot tomcat logging