【问题标题】:Tomcat War Deployment Error with Logback in Spring BootSpring Boot 中 Logback 的 Tomcat War 部署错误
【发布时间】: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


    【解决方案1】:

    您指定的日志目录权限不足,应用没有写入权限。

    你可以使用chmod 777 dir给那个目录完全访问权限,或者在配置文件中指定一个有访问权限的目录

    【讨论】:

      猜你喜欢
      • 2015-03-10
      • 2018-12-05
      • 2018-05-18
      • 2016-08-11
      • 2020-06-17
      • 1970-01-01
      • 2016-02-15
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多