티스토리 뷰

CI-CD

QB configuration.log

자바바라 2025. 7. 9. 06:39

QuickBuild의 configuration.log 파일을 생성하는 "코드"에 대해 설명.

결론부터 말씀드리면, 사용자가 직접 볼 수 있는 단일 스크립트나 코드 파일은 없습니다. 해당 로그는 QuickBuild 서버 애플리케이션의 핵심 로직(컴파일된 Java 코드)에 의해 생성.

하지만 어떻게, 왜, 그리고 어떤 형식으로 로그가 생성되는지 그 원리를 이해하는 것이 중요. 이 원리를 알면 로그를 더 잘 파싱하고 활용할 수 있다.

configuration.log 생성 원리: Log4j 로깅 프레임워크

QuickBuild는 Java로 만들어진 애플리케이션이며, 내부적으로 매우 유명한 로깅 프레임워크인 Apache Log4j를 사용.

즉, QuickBuild의 소스 코드 내에는 다음과 같은 형태의 "로그를 남겨라"는 명령어들이 곳곳에 포함되어 있다.

 

// 이것은 QuickBuild 내부 코드의 '가상' 예시입니다. 실제 코드는 공개되어 있지 않습니다.
// 예: 빌드가 끝났을 때 BuildManager 클래스 내부
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BuildManager {
    private static final Logger logger = LoggerFactory.getLogger(BuildManager.class);

    public void onBuildFinished(Build build) {
        long durationSeconds = build.getDuration() / 1000;
        
        // 여기에 로그를 기록하는 코드가 있습니다!
        logger.info("Build '{}' is FINISHED ({}) in {} seconds", 
                    build.getId(), 
                    build.getStatus(), 
                    durationSeconds);
    }
}

logger.info(...) 와 같은 코드가 실행될 때, Log4j 프레임워크가 이 메시지를 받아 어디에(Where), 어떤 형식으로(How), 어떤 레벨의(What level) 로그를 남길지 결정.

이 모든 설정은 바로 log4j.properties 파일에 정의되어 있다.

log4j.properties 파일: 로그 생성의 설계도

이 파일은 QuickBuild 로그 시스템의 모든 것을 제어하는 "설계도"와 같다. 이 파일을 통해 configuration.log가 어떻게 생성되는지 정확히 알 수 있다.

  • 파일 위치: <QuickBuild 설치 경로>/conf/log4j.properties

이 파일을 열어보면 다음과 같은 구조로 되어 있다.

1. Appender (어디에 저장할 것인가?)

Appender는 로그를 어디에 보낼지 정의합니다. configuration.logCONF라는 이름의 Appender에 의해 관리됩니다.

# A size based rolling appender for configuration log
log4j.appender.CONF=org.apache.log4j.RollingFileAppender
log4j.appender.CONF.File=${quickbuild.home}/logs/configuration.log
log4j.appender.CONF.MaxFileSize=10MB
log4j.appender.CONF.MaxBackupIndex=5
log4j.appender.CONF.layout=org.apache.log4j.PatternLayout
log4j.appender.CONF.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
  • log4j.appender.CONF.File: 로그 파일의 경로와 이름 지정. logs/configuration.log로 설정되어 있다.
  • log4j.appender.CONF.MaxFileSize: 로그 파일이 10MB에 도달하면 새 파일을 만든다.
  • log4j.appender.CONF.MaxBackupIndex: 최대 5개의 오래된 로그 파일(configuration.log.1, configuration.log.2 등)을 보관.
  • log4j.appender.CONF.layout.ConversionPattern: 로그 형식(포맷)을 정의하는 가장 중요한 부분.

2. ConversionPattern (어떤 형식으로 기록할 것인가?)

이 패턴이 Grafana 파싱의 핵심입니다. 각 기호는 특정 정보를 의미.

%d [%t] %-5p %c - %m%n

  • %d: 날짜 및 시간 (예: 2023-10-27 15:30:00,123)
  • [%t]: 스레드 이름(Thread Name). QuickBuild에서는 이 부분이 매우 중요하며, 보통 빌드를 실행하는 설정의 경로(예: master>root/my-project/main-build)가 여기에 표시.
  • %-5p: 로그 레벨(INFO, DEBUG, WARN, ERROR 등). 5자리로 왼쪽 정렬.
  • %c: 로거 이름(Logger Name). 보통 로그를 발생시킨 Java 클래스 이름 (예: build.BuildManager).
  • -: 구분자
  • %m: 로그 메시지 본문(예: Build '12345' is FINISHED (SUCCESS) in 120 seconds)
  • %n: 줄 바꿈

이 패턴 때문에 configuration.log의 모든 라인은 일관된 형식을 가지게 되며, Promtail의 정규표현식으로 파싱할 수 있는 것이다.

3. Logger (무엇을 기록할 것인가?)

Logger는 특정 코드 패키지나 클래스에서 발생하는 로그를 어떤 레벨로, 어느 Appender로 보낼지 결정.

 

# Logger for configuration related services.
log4j.logger.com.pmease.quickbuild.model.Configuration=INFO, CONF
log4j.logger.com.pmease.quickbuild.build=INFO, CONF
log4j.logger.com.pmease.quickbuild.schedule=INFO, CONF
  • log4j.logger.com.pmease.quickbuild.build=INFO, CONF
    • 의미: com.pmease.quickbuild.build 패키지(및 그 하위 패키지)에서 발생하는 로그 중...
    • INFO 레벨 이상의 로그들을...
    • CONF Appender (즉, configuration.log 파일)로 보내라.

이 설정 때문에 빌드 시작/종료, 스케줄링 같은 중요한 이벤트들이 configuration.log에 기록되는 것이다.

요약

  • 생성 주체: QuickBuild 서버의 컴파일된 Java 코드
  • 생성 메커니즘: Apache Log4j 프레임워크 사용
  • 제어 파일: <QuickBuild>/conf/log4j.properties
  • 핵심 설정:
    1. Appender: 로그를 configuration.log 파일에 저장하도록 지정.
    2. ConversionPattern: 날짜 [설정경로] 레벨 클래스 - 메시지와 같은 일관된 로그 형식을 정의합니다. (이것이 Grafana 파싱의 열쇠.)
    3. Logger: 빌드, 설정, 스케줄과 관련된 중요한 이벤트 로그만 configuration.log에 보내도록 필터링.

따라서 configuration.log를 생성하는 "코드"를 직접 수정할 수는 없지만, log4j.properties 파일을 수정하여 로그의 형식, 저장 위치, 상세 수준(레벨)을 변경하는 것은 가능.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함