axboot-common.properties에 아래 코드를 추가한다.
resources 폴더에 banner.txt 파일을 생성하고, patorjk에서 간지나는 문자를 생성해서 banner.txt에 저장해준다.
프로그램 실행시에 기본배너가 아닌 간지나는 배너를 확인할 수 있다.
System.out.println() 은 성능에 문제가 생길 수 있다.
Logging이 없던 시절에나 사용하던 방식이다.
현장에서 주로 많이 사용하는 것은 info, error. 나머지는 필요에 따라 사용한다.
에러 로그를 남기고 싶은 서비스단 상단에 아래 코드를 추가해준다.
로그를 확인하고자 하는 메소드에 아래 코드를 추가한다.
swagger에서 해당 컨트롤러를 실행하면 로그를 확인할 수 있다.
axboot-local.properties / axboot-production.properties
true면 db에 저장이 되고, false면 저장되지 않는다.
logback.xml을 보면
<configuration>
<include resource="logback-common.xml"/>
<include resource="logback-${spring.profiles.active:-local}.xml"/>
</configuration>
이런 코드가 있는데 에러가 발생했을 때 실행하는 순서를 나타낸다.
logback-common.xml은 오류를 콘솔에 출력하는 형식이 담겨져 있다.
logback-local.xml || logback-production.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<!-- 파일경로 설정 -->
<property name="LOGS_ABSOLUTE_PATH" value="./logs" />
<!-- File Appender -->
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일명 설정 -->
<file>${LOGS_ABSOLUTE_PATH}/logback.log</file>
<!-- 출력패턴 설정-->
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<!-- Rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
<fileNamePattern>${LOGS_ABSOLUTE_PATH}/logback.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 kb, mb, gb -->
<maxFileSize>300kb</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거-->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="ERROR">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ROLLING" />
</root>
</included>
local은 개발하면서 발생할 에러 로그에 관한 것이고 production은 배포시에 발생할 에러 로그에 대한 것이다.
rolling 정책 : 데이터가 어느정도 차면 파일을 삭제하고 다시 만드는 것을 반복적으로 실행해라 등의 설정을 할 수 있다.
<appender-ref ref="ROLLING" />
로 설정하면 intellij에서 로그를 확인 할 수 없고 로그 파일에 저장된다.
STDOUT 주석을 해제하면 화면과 로그파일 모두에 작성된다.
배포용으로 서버를 실행시키려면 Application 코드의 local을 production으로 변경하면 된다.
Controller에서 try catch 문을 작성해 보면
로그파일에서 확인할 수 있다.
Service에 Exception을 던지는 코드를 작성한다.