当前位置: 首页 > 知识库问答 >
问题:

使用日志配置在Ubuntu上部署SpringBoot失败,FileNotFoundException(权限被拒绝)

闻人哲茂
2023-03-14

我正在尝试将简单的SpringBoot应用程序部署在Ubuntu服务器上,作为Upstart服务。此应用程序具有logback-spring.xml配置,该配置指向创建服务日志文件的完全相同位置,即/var/log/upstart目录。

但当我部署此应用程序时,它会失败,并出现以下错误,指示某些权限问题(permission denied),

<?xml version="1.0" encoding="UTF-8"?>
<!-- Enable jmxConfiguration to allow dynamic level change through spring boot admin -->
<jmxConfigurator/>

<property resource="log.properties" />

<!-- Standard console appender used in all environments. Upstart catches logs and stores in /var/log/upstart-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>[%-5level] [%t] %d %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

<springProfile name="local">
    <appender name="local" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.local.path}/${log.name.async}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.local.path}/%d{yyyy-MM-dd,aux}/${log.name.async}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>7</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 256MB -->
                <maxFileSize>256MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%-5level [%t] %d{yyyy-MM-dd_HH:mm:ss.SSS} %logger{35} - %msg%n</Pattern>
        </encoder>
    </appender>
</springProfile>

<root level="INFO">
    <appender-ref ref="console"/>
    <appender-ref ref="local"/>
</root>
log.local.path=/var/log/upstart
log.name.async=propspace-async

共有1个答案

郭元凯
2023-03-14

我终于弄明白了问题所在。虽然这个错误很简单,但有些事情我需要重新审视。

服务是Ubuntu上的用户“appuser”拥有的。

用户“AppUser”不允许将日志指向的目录(/var/log/upstart/)。日志目录由用户“root”拥有。因此,我创建了另一个目录(/var/log/app/),该目录也由同一个用户(即'appuser')拥有,并启动了应用程序。

它解决了问题。

 类似资料: