파일에서 Systemd 로그로 로그 리디렉션

파일에서 Systemd 로그로 로그 리디렉션

systemd service로 시작된 프로그램이 있습니다 myprogram.service. 문제는 로그를 로그 파일에 직접 기록한다는 것입니다 /opt/myprogram/logs.txt. .journalctl

myprogram.service특정 파일의 텍스트를 로그로 파이프하도록 Systemd에 지시하도록 수정하는 것이 가능합니까 ?

답변1

tail먼저 와 을 결합 해 보겠습니다 logger.

tail -f /opt/myprogram/logs.txt | logger

tail파일에서 모든 새 줄을 지속적으로 읽고 표준 출력에 복사합니다. 로거는 이러한 행을 시스템 로그로 보냅니다.

편집하다:

파이프가 버퍼링 중이기 때문에 로거는 잠시 동안(4Kb 기본 버퍼가 채워질 때까지) 잠자기 상태일 수 있습니다. 이 문제는 stdbuf버퍼링을 사용하거나 비활성화하여 해결할 수 있습니다 unbuffer.

stdbuf -i0 -o0 tail -f /opt/myprogram/logs.txt | logger

답변2

애플리케이션에서 출력 파일 이름을 변경할 수 없는 경우 서비스 단위에서 심볼릭 링크 /opt/myprogram/logs.txt로 생성을 강제로 생성할 수 있습니까 /dev/stdout? 출시 전이나 출시 후 단계 또는 두 단계 모두에서 수행 할 수 있습니다.

  • 이는 귀하의 필요에 따라 달라질 수도 있습니다 /dev/stderr.

관련 정보