Spring Boot로 구성한 Application을 CentOS의 Systemd 서비스로 등록하기 위해서 다음의 파일을 /etc/systemd/system/demo.service
파일로 기록합니다. → 별도의 Configuration YAML 파일을 지정하려면 다음과 같이 -Dspring.config.location
옵션을 지정하고, 지정하지 않으면 JAR 파일의 CLASSPATH에서 application.yml 파일을 로딩합니다.
코드 블럭 |
---|
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
<configuration>
<conversionRule conversionWord="trueclr" scanPeriod="30 seconds"converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<appender<conversionRule nameconversionWord="STDOUTwex" classconverterClass="ch.qosorg.springframework.boot.logging.logback.core.ConsoleAppenderWhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" <encoder>converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property <pattern>%d{name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern>
</encoder>}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} [%X{requestId:- }]%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
</appender>
<appender <property name="ROLLINGCONSOLE_LOG_CHARSET" class="ch.qos.logback.core.rolling.RollingFileAppender"value="${CONSOLE_LOG_CHARSET:-default}"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level><property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property </filter>
<file>mylog.txt</file>name="FILE_LOG_CHARSET" value="${FILE_LOG_CHARSET:-default}"/>
<rollingPolicy<appender name="CONSOLE" class="ch.qos.logback.core.rolling.TimeBasedRollingPolicyConsoleAppender">
<!-- rollover daily --><encoder>
<fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><pattern>${CONSOLE_LOG_PATTERN}</pattern>
<timeBasedFileNamingAndTriggeringPolicy<charset>${CONSOLE_LOG_CHARSET}</charset>
</encoder>
</appender>
<logger classname="chorg.qoshibernate.logbackvalidator.coreinternal.rolling.SizeAndTimeBasedFNATP"util.Version" level="WARN"/>
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
<logger name="org.crsh.plugin" level="WARN"/>
<!-- or whenever the file size reaches 100MB --<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
<logger name="org.springframework" level="INFO"/>
<logger name="org.hibernate" level="INFO"/>
<logger <maxFileSize>100MB</maxFileSize>name="org.quartz" level="INFO"/>
<logger name="com.mchange" level="INFO"/>
<logger </timeBasedFileNamingAndTriggeringPolicy>name="com.zaxxer" level="TRACE"/>
<logger </rollingPolicy>name="springfox.documentation" level="INFO"/>
<logger <encoder>name="jdbc.sqlonly" level="WARN"/>
<logger name="jdbc.sqltiming" level="WARN"/>
<pattern>[%-5level] %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern><logger name="jdbc.resultset" level="WARN"/>
<logger name="jdbc.audit" level="WARN"/>
</encoder>
<logger </appender>
name="jdbc.connection" level="WARN"/>
<root<logger name="io.datadynamics" level="debugDEBUG"/>
<appender-ref ref<root level="STDOUTDEBUG"/>
<appender-ref ref="ROLLINGCONSOLE"/>
</root>
</configuration> |
...
코드 블럭 |
---|
language | yml |
---|
linenumbers | true |
---|
|
logging:
config: claspath:/opt/app/logback.xml |
이제 다음의 커맨드로 서비스를 시작합니다.
...