ℒℴℊ𝒷𝒶𝒸𝓀

2024. 8. 5. 20:19TIL

✔오늘 배운 중요한 🔑 point

  • ELK와 EFK는 로그 데이터를 수집,분석할 수 있는 도구
  • 로그데이터를 저장,출력하기 위해서 Logback 사용한다.
  • Log Level을 INFO로 설정을 하면 (INFO, WARN, ERROR) 메세지를 포함한다.

🎯 오늘 배운 내용

 

Log

우리는 평소에 코드를 작성하면서 내가 작성하고 있는 코드가 내가 생각한대로 진행이 되고있는지를 확인하고 싶을때 Log를 활용한다.


override fun upload(fileList: List<MultipartFile>, filePath: String): List<String> {
    if (!fileList.all { tikaUtil.validateMediaFile(it) }) {
        throw IllegalArgumentException("Invalid file format")
    }
    logger.info("upload files: $filePath")
    return fileList.map { s3Service.upload(it, filePath) }
}

이런식으로 logger.info를 사용하여 Log를 기록하게 되면 콘솔창을 통해서 해당 값에 대해서 알수 있다.

하지만 이 Log를 콘솔창에만 띄우는 것이 아닌 해당 로그를 수집,저장,검색,분석, 시각화 등을 통해서 데이터를 효과적으로 활용할 수 있다.

 

Logback

로그 메세지를 처리하고 출력하는 전반적인 설정과 관리 기능을 제공하는 Logging Framework이다.

로그 데이터를 활용하기 위해서는 로그가 단순히 콘솔창에만 뜨고 사라지는것이 아닌 파일로써 저장이 되어야만 한다.

따라서 로그 파일을 저장하고  ELK / EFK 스택과 통합하기 위해서 Logback을 사용한다.

 

Logback 설정

 

<configuration>

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

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/application-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

 

이제 프로그램이 실행이 될때 자동으로 appliation.log라는 파일에 저장이 된다.

 

🤔 어떻게 활용할까?

Logback을 통해 로그데이터를 저장하고 해당 로그데이터를 ELK 스택 혹은 EFK 스택을 사용하여 로그를 분석하고 시각화 할 수 있게 되었다.

📓 오늘의 한줄

"Growth is the only evidence of life."

- John Henry Newman -