Springboot

AOP 사용해서 sentry및 Log적용

25G 2021. 8. 13. 16:54

log나 sentry 같은 공통기능들은 advice에서 처리를 해야 프로그램이 엄청 심플해진다.

advice파일이 하나여야한다는 법칙은 없기 때문에 상황에 따라서 공통 관심사가 생기면 추가시켜주면 된다.

 

log 남기기

info는 정상적일 때 실행되는 정보를 알려주는 log

문제가 생겼을 때는 log.warn이나 log.error를 남긴다.

개발을 할 때는 log.debug를 사용한다. debug는 debug모드에서만 실행된다.

 

 

로그에는 레벨이란 게 있다

1. error

2.warn

3.info

4.debug

이렇게 있는데 만약에 로그 레벨을 info로 해놓으면 info이상만 뜬다.

그럼 이 해당 로그가 뜰 때마다 파일로 남기고 싶을 때는 어떻게 할까?

위 파일을 만든다.

아래 코드는 그냥 복붙 해서 사용하면 된다.

STDOUT은 콘솔에 뿌려지는 것을 말하는 것이다

FILE은 file에 남겨지는 것을 얘기하는 것이다 RollingFileAppender를 쓰는 이유는 파일이 생길 때마다 파일명을 수정해주는 것이다.

maxFileSize는 5메가 넘어가면 새로운 파일을 생성해주겠다는 것

root level이 INFO라는 것은 내 프로젝트에는 info이상만 뿌려진다는 뜻

 

그럼 이제 위 logger name에 경로에만 발생하는 로그 중 warn이상의 레벨은 전부다 파일에 저장하겠다는 뜻이다

그럼 복사해서 사용할 때는 이 경로와 로그 레벨만 프로젝트에 맞게 설정해주면 되는 것이다.

 

<?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>
    
    <logger name="com.cos.person.config" level="WARN">
        <appender-ref ref="FILE" />
    </logger>

</configuration>

나중에 복붙 해서 사용할 것이다.

위 설정을 해주면 해당 폴더와 로그가 남겨진다.

이렇게 debug를 받고 싶으면 

위 로그 레벨을 debug로 바꿔주면 끝 

위 파일의 소스는 문서에 있는 걸 그대로 들고 와서 상황에 맞게 조금씩만 바꿔주면 되는 것이니 수기로 작성할 필요가 없다.

그럼 이제 로그파일을 따로 빼서 로그만 관리하면 된다.

sentry

 

https://sentry.io/welcome/?utm_source=google&utm_medium=cpc&utm_campaign=9575834316&utm_content=g&utm_term=sentry.io&gclid=CjwKCAjwsNiIBhBdEiwAJK4khm0jlx-4SIrRJzKL2IercbkksSvoYuWzpGFA4NqQpJVERBZSzXwmIxoCkgwQAvD_BwE 

 

Application Monitoring and Error Tracking Software

Self-hosted and cloud-based application monitoring that helps software teams discover, triage, and prioritize errors in real-time.

sentry.io

이 사이트를 이용하면 로그를 db에 넣어서 관리할 수 있다.

'Springboot' 카테고리의 다른 글

MessageConverter란?(Jackson)  (0) 2021.08.22
톰켓이란?  (0) 2021.08.20
AOP실습해보기  (0) 2021.08.13
AOP개념  (0) 2021.08.13
체크박스를 통해서 자바스크립트로 fetch요청하기  (0) 2021.08.11