Daemontools 멀티로그는 로그 줄 시간 정보를 잃습니다. 어떻게 고치나요?

Daemontools 멀티로그는 로그 줄 시간 정보를 잃습니다. 어떻게 고치나요?

나는 사용하고있다데몬 도구프로세스 및 해당 출력 로그를 모니터링합니다. 나는 사용하고있다다중 로그디스크에 로그를 씁니다.

로그 실행 스크립트는 다음과 같습니다.

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

모니터링되는 프로세스는 출력을 stderr에도 기록합니다. 따라서 프로세스의 실행 스크립트에는 stderr을 stdout으로 리디렉션하는 다음 줄이 있습니다.

exec 2>&1
exec ./my_process

그러나 로그 파일을 추적할 때 수백 줄의 출력 팝업이 표시되고(모니터링되는 프로세스는 몇 초마다 출력을 기록함) 로그 줄의 타임스탬프는 마이크로초 미만 수준으로 다양합니다. 프로세스의 특성상 로그 라인 간의 시간 차이가 작지 않다는 것을 알고 있습니다. 분명히 멀티로그는 출력을 버퍼링한 다음 파일에 쓸 준비가 되면 타임스탬프를 추가합니다. 타임스탬프에 행이 출력된 시간을 더 정확하게 반영하고 싶습니다. 이 문제를 어떻게 해결하나요?

답변1

모니터링되는 스크립트는 Python 스크립트입니다. 모든 표준 스트림을 버퍼링되지 않게 만들려면 -u인터프리터에 옵션을 전달하는 것만으로도 작동한다는 것을 알았습니다 . 이것은 내 문제를 해결했습니다.

관련 정보