Server/Spring Boot

spring boot // log 남기기 / 파일로 저장하기

Jaybon 2020. 8. 17. 12:51

 

참고

blog.naver.com/getinthere/221799123006

 

springboot 23강 - AOP + logger(logback-spring.xml), AOP+BindingResult

https://github.com/codingspecialist/Springboot-MyBatis-Blog-V31. 의존성2. AOP 파일 생성(1) c...

blog.naver.com

 

참고

https://blog.naver.com/getinthere/221799123006

 

springboot 23강 - AOP + logger(logback-spring.xml), AOP+BindingResult

https://github.com/codingspecialist/Springboot-MyBatis-Blog-V31. 의존성2. AOP 파일 생성(1) c...

blog.naver.com

 

현재 프로젝트

https://github.com/jaybon1/springwork/tree/master/logTest

 

jaybon1/springwork

Contribute to jaybon1/springwork development by creating an account on GitHub.

github.com

 

 

--

 

 

밸리데이션 이용

--

 

 

--

 

 

밸리데이션 어노테이션 확인

https://gmlwjd9405.github.io/2018/12/02/spring-annotation-types.html

 

[Spring] Spring Annotation의 종류와 그 역할 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

javax 것을 사용

 

어노테이션으로 밸리데이션 체크

--

 

 

컨트롤러에 테스트 매핑추가

--

 

 

포스트맨 테스트

--

 

 

컨트롤러에서 에러처리

--

 

 

포스트맨에서 확인

--

 

 

AOP 의존성추가

--

 

 

pom.xml에 추가

--

 

 

컨트롤러에서 에러처리 코드를 잘래내기

--

 

 

aop로 바인딩 어드바이스를 하기 위해 패키지와 파일 생성

--

 

 

Around로 처리

--

 

 

로그를 확인하기 위한 로거 생성

--

 

메시지를 띄우기 위해 적어주기

1. 에러가 난 클래스 이름과 메서드이름을 변수에 입력
2. 콘솔에 로그를 남긴다 

--

 

 

--

 

 

이제 AOP로 warn이 뜨는 것만 파일로 낚아채보자

 

 

logback 설정파일 생성

--

 

 

--

 

 

예시코드 - 자신에 맞게 수정하여 사용하자

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOGS_ABSOLUTE_PATH" value="./logs" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <appender name="FILE" 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>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOGS_ABSOLUTE_PATH}/logback.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

	<root level="INFO">
    	<appender-ref ref="STDOUT" />
    </root>
    
<!--     warn 설정시 warn info debug가 저장된다 -->
    <logger name="com.jaybon.config.aop.warn" level="WARN">
        <appender-ref ref="FILE" />
    </logger>

</configuration>
[출처] springboot 23강 - AOP + logger(logback-spring.xml), AOP+BindingResult|작성자 getinthere

--

 

 

로그 주소

 

콘솔에 뜨는 방식

 

파일명이 바뀌며 폴더를 날짜별로 정리 - RollingFileAppender
LOGS_ABSOLUTE_PATH - 위에서 설정한 로그 주소
maxFileSize - 파일 용량
maxHistory - 로그 개수

 

에러레벨을 설정한다
DEBUG / INFO / WARN / ERROR 순서의 위험도
자신의 위험도 이상의 내용만 뜬다

--

 

aspect파일에서 예외를 발생시키면 

--

콘솔에 로그가 찍히고

--

 

로그파일에 로그데이터가 저장되어 있다

--