이 답변은 확장 성 고려 사항에 대한 것입니다. 작업자 수가 많거나 여러 명으로 동시에 로그를 빠르게 생성 할 수있는 경우.
예, 여러 로그 파일을 동시에 사용하는 것이 좋습니다.
여러 작업자의 단일 로그 파일 로그를 실시간으로 결합하려고하면 문제가 발생합니다.
- 메시지 손실을 막기 위해 차단 메커니즘을 사용하면 작업자 속도가 느려집니다.
- 로그 메시지가 결합 된 로그 파일에서 순서가 잘못 표시 될 수 있음
- 제한된 기록 속도로 인해 로그를 결합하는 중앙 집중식 로깅 기능이 과부하 될 수 있으며 메시지가 손실됩니다
샤딩 로그 파일 (동시에 여러 개의 로그 파일을 사용)은 자체적으로 확장 가능한 고성능 중앙 로깅 서비스를 제공하는 일부 호스팅 제공 업체에서 사용하는 기술입니다. 예를 들어, 로그를 파일로 내보낼 때 Google의 StackDriver 로깅 은 여러 개의 분할 된 로그 파일을 생성합니다. 에서 Google 클라우드 저장소에서 로그 항목 :
이 때 로그를 내보내 클라우드 스토리지 버킷, 스택 드라이버 로깅은 버킷에 파일 세트를 작성합니다. 파일은 로그 유형 및 날짜별로 디렉토리 계층 구조로 구성됩니다. 로그 유형은 간단한 이름 또는와 같은 syslog
복합 이름 일 수
appengine.googleapis.com/request_log
있습니다. 이러한 로그가라는 버킷에 저장된 경우 my-gcs-bucket
디렉토리는 다음 예제와 같이 이름이 지정됩니다.
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
단일 버킷에는 여러 로그 유형의 로그가 포함될 수 있습니다.
리프 디렉토리 ( DD/
)에는 여러 파일이 있으며 각 파일에는 파일 이름에 지정된 기간 동안 내 보낸 로그 항목이 있습니다. 파일이 샤딩되고 이름이 샤드 번호 Sn
또는 An
(n = 0, 1, 2, ...)로 끝납니다
. 예를 들어, 다음에 저장 될 수있는 두 개의 파일이 있습니다 directory
my-gcs-bucket/syslog/2015/01/13/
.
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
이 두 파일에는 syslog
0800 UTC를 시작하는 시간 동안 모든 인스턴스에 대한 로그 항목이 포함되어 있습니다 . 모든 로그 항목을 가져 오려면 각 기간 (이 경우 파일 샤드 0 및 1)에 대한 모든 샤드를 읽어야합니다. 기록 된 파일 샤드 수는 로그 항목의 볼륨에 따라 각 기간마다 변경 될 수 있습니다.
이러한 고성능 로깅 서비스는 파일에 대한 로깅 대안을 제공 할 수 있으므로 관심있는 경우 로그 파일 관리를 완전히 피할 수 있습니다.
마지막으로 실시간 로그 파일 병합이 여러 로그 파일을 요구하지 않는 경우 오프라인 로그 관리에 도움이 될 수 있습니다.
- 점진적인 로그 백업, 압축, 보관 및 최종 폐기 계획을 쉽게 수립 할 수 있습니다.
- 병목 현상을 줄이거 나 피하기 위해 여러 로그 세트 (로그 파일)의 병렬 처리가 가능합니다.
- 파일 분할 및 재 작성 불필요