Spring 使用 Logback 启动应用程序不会作为 Systemd 服务登录到指定位置
Spring Boot App with Logback does not log to specified location as Systemd Service
我有一个配置文件 prod
的登录,因此它在 Spring 引导项目的 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.properties
和 logback.xml
文件。不确定这是否与它有关。
原来我所要做的就是添加
logging.config=classpath:logback-prod.xml
在 application-prod.properties
文件中。
出于某种原因,我希望它会根据给定的 个人资料 名称自动拾取。
我有一个配置文件 prod
的登录,因此它在 Spring 引导项目的 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.properties
和 logback.xml
文件。不确定这是否与它有关。
原来我所要做的就是添加
logging.config=classpath:logback-prod.xml
在 application-prod.properties
文件中。
出于某种原因,我希望它会根据给定的 个人资料 名称自动拾取。