簡體   English   中英

帶有 Logback 的 Spring Boot 應用程序不會作為 Systemd 服務登錄到指定位置

[英]Spring Boot App with Logback does not log to specified location as Systemd Service

我有一個配置文件prod的 logback,它在 Spring Boot 項目的resources目錄中被命名為logback-prod.xml 我創建了一個具有以下配置的systemd服務:

[Unit]
Description=TopFind Search API & Service
After=syslog.target

[Service]
Type=simple
User=topfind-apps
ExecStart=/opt/jdk-13/bin/java -Dspring.profiles.active=prod -jar /home/topfind-apps/apps/api/search-api.jar SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

prod配置文件的 logback 文件指向日志文件應在 30 天后存儲和壓縮的位置。 以下是我的logback文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- ENVIRONMENT properties -->
    <property name="APP_NAME" value="search-api"/>
    <property name="USER_PROFILE" value="topfind-apps"/>
    <property name="LOGS" value="/home/${USER_PROFILE}/logs/${APP_NAME}"/>

    <appender name="FileRolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/${APP_NAME}.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOGS}/archived/${APP_NAME}-%d{yyyy-MM-dd-HH}.log.gz</fileNamePattern>
            <!-- 30 days to keep -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{dd/MM/yyyy HH:mm:ss.SSS} [%t] - %p - %class{36}.%M %L - %m%n</pattern>
        </encoder>
    </appender>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{dd/MM/yyyy HH:mm:ss.SSS} [%t] - %p - %class{36}.%M %L - %m%n</pattern>
        </encoder>
    </appender>

    <logger name="search-api" level="info" additivity="false">
        <appender-ref ref="FileRolling"/>
    </logger>

    <root level="info">
        <appender-ref ref="FileRolling"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>

項目內的application-prod.properties中存在以下日志記錄配置行:

# Logback
logging.level.org.springframework=INFO
logging.level.topfind-api=INFO
logging.pattern.file=%d %p %c{1.} [%t] %m%n
logging.pattern.console=%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n

當我啟動systemd服務時,我可以通過journalctl查看日志,但是沒有創建日志文件。 關於我可能出錯的地方有什么建議嗎?

注意:我沒有default配置文件application.propertieslogback.xml文件。 不確定這是否與它有關。

原來我所要做的就是在application-prod.properties文件中添加logging.config=classpath:logback-prod.xml

出於某種原因,我希望它會根據給定的配置文件名稱自動提取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM