개발이군고구마

[전전긍긍 설정세팅] 6. 로그 설정 (#공통규약) 본문

SERVER/Architecture

[전전긍긍 설정세팅] 6. 로그 설정 (#공통규약)

김구황 2025. 5. 28. 08:50
728x90

실무에서 운영 에러나 각 부서의 오류 파악 일감을 맡게 되면 키바나 로그가 큰 도움이 된다. 

로그를 통해 사용자들의 흔적을 추적하면 어디서 어떤 에러가 발생했는지 파악할 수 있기 때문이다. 

그렇기 때문에 필요한 정보를 담은 로그를 적절한 위치에 넣어주는 것이 매우 중요한데.....................................

 

그냥 로그는 로그 ^~^ 어디서 자동으로 나오나보다~ 라는 꽃밭과 같은 생각을 하고 있었다 (노.답.)

컴퓨터에 자동으로 되는게 어딨냐.......... 자동같은 소리하고 있네...

 

 

세팅 분석을 계기로 이참에 내가 보는 이 로그가 어떻게, 어떤 원리로 나오는지 파악해보기로 하자. 


 

1. 스프링 자동 로그 기능 

LogBack 이란

SpringBoot의 기본 로깅 프레임 워크 

따로 설치하지 않아도 spring boot starter 에 포함되어 있어서 바로 쓸 수 있음 

 

 

기본 로그 확인하기 

private static final Logger logger = LoggerFactory.getLogger(DummyController.class);

@PostMapping("/api/tests")
public CommonResponse<?> testApi(@RequestBody @Valid TestEntity testEntity) {
    logger.info("INFO 레벨 로그");
    logger.debug("DEBUG 레벨 로그");
    logger.error("ERROR 레벨 로그");
    return CommonResponse.ok(TestEntityResponse.TEST_ENTITY_CREATED, testEntity);
}

 

2025-05-28T08:20:41.151+09:00  INFO 9152 --- [           main] c.e.p.d.e.controller.DummyController     : INFO 레벨 로그
2025-05-28T08:20:41.151+09:00 ERROR 9152 --- [           main] c.e.p.d.e.controller.DummyController     : ERROR 레벨 로그

위와 같이 default 설정된 로그가 찍히는 것을 확인할 수 있다. (Test code 작성시 debug 레벨은 안보이게 설정되어 있나봄)

 

 

 

2. 로그 커스텀 설정에서 해보기 

기본 경로 - 가장 메인 루트에 설정

 

 

예시 

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

콘솔에만 로그를 출력한다 

 

 

결과

2025-05-28 08:32:43 [main] INFO  c.e.p.d.e.controller.DummyController - INFO 레벨 로그
2025-05-28 08:32:43 [main] ERROR c.e.p.d.e.controller.DummyController - ERROR 레벨 로그

커스텀에서 바꾼대로, 날짜, 스레드 정보 등이 더 간결하게 표현된 것을 알 수 있다. 

 

 

3. 다양한 환경 설정 

- (환경별로) 로그 레벨을 바꿔보기

<springProfile name="default,local,dev">
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</springProfile>

 

 

- 특정 패키지/클래스만 레벨을 다르게 줘보기 

<springProfile name="test">
    <root level="ERROR">
        <appender-ref ref="CONSOLE"/>
    </root>
    <!-- 프로젝트 패키지의 로그 설정은 application.yml에서 설정됨 -->
    <logger name="com.example.green" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
</springProfile>

 

 

- 로그를 파일로 남겨보기 

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <!-- 로그 파일 경로 설정 -->
    <file>logs/practice.log</file>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

지정된 경로에 정의한 패턴으로 로그가 남겨 저장된다

테스트 실행할 때마다, 로그 파일 갱신됨