Spring Boot로 구성한 Application을 CentOS의 Systemd 서비스로 등록하기 위해서 다음의 파일을 /etc/systemd/system/demo.service
파일로 기록합니다. →
[Unit] Description=Demo Java Service [Service] WorkingDirectory=/opt/app ExecStart=/bin/java -Dspring.config.location=/opt/app/application.yml -jar /opt/app/demo-0.0.1-SNAPSHOT.jar → spring.config.location으로 설정 파일 추가 User=root Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Logback 설정 파일을 /opt/app/logback.xml
파일로 저장합니다.
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern> </encoder> </appender> <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <file>mylog.txt</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>[%-5level] %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT"/> <appender-ref ref="ROLLING"/> </root> </configuration>
Spring Boot의 설정 파일인 /opt/app/application.yml
파일을 다음과 같이 작성합니다. 아래 설정에서는 로그 파일의 경로만 지정하였습니다.
logging: config: claspath:/logback.xml
이제 다음의 커맨드로 서비스를 시작합니다.
# systemctl start demo.service # systemctl status demo.service