Spring Boot로 구성한 Application을 CentOS의 Systemd 서비스로 등록하기 위해서 다음의 파일을 /etc/systemd/system/demo.service
파일로 기록합니다.
코드 블럭 |
---|
language | text |
---|
linenumbers | true |
---|
|
[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
파일로 저장합니다. JAR 파일에 logback.xml
파일이 있다면 이 설정이 제대로 적용되지 않습니다. 따라서 개발시에 사용하는 로그 설정은 파일명이 logback-local.xml
파일 처럼 변경하시기 바랍니다.
코드 블럭 |
---|
language | xml |
---|
linenumbers | true |
---|
|
<?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="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ROLLING"/>
</root>
</configuration> |
Spring Boot의 설정 파일인 /opt/app/application.yml
파일을 다음과 같이 작성합니다. 아래 설정에서는 로그 파일의 경로만 지정하였습니다.
코드 블럭 |
---|
language | yml |
---|
linenumbers | true |
---|
|
logging:
config: /opt/app/logback.xml |
이제 다음의 커맨드로 서비스를 시작합니다.
코드 블럭 |
---|
language | text |
---|
linenumbers | true |
---|
|
# systemctl start demo.service
# systemctl status demo.service |