로그를 표준 오류로 출력하는 프로세스가 있고 이를 systemd service 로 실행합니다 Type=simple
. StandardError
및 StandardOutput
필드를 기본값( inherit
및 journal
)으로 두고 필드를 설정했습니다 . SyslogIdentifier
따라서 로그에서 지정된 식별자가 있는 서비스 로그를 보고 싶습니다.
이들 모두는 대부분의 경우 잘 작동합니다. 서비스가 매우 긴 텍스트 줄(50KB 이상)을 출력하기 시작할 때 문제가 발생합니다.
systemd(또는 로깅)가 긴 로그 줄을 끊는 것 같습니다(확실하지는 않지만 테스트에 따르면 제한은 48KB라고 생각됩니다). 여러 로그 메시지에 나타납니다. 그러나 내 서비스가 잠시 동안(최소 몇 시간) 실행되고 매우 큰 행이 출력된 후 로그에 대한 로깅이 갑자기 중지됩니다. 서비스가 여전히 정상적으로 실행되고 있는 것을 볼 수 있으며, 여전히 로그 메시지를 출력하고 있다고 생각하지만(표시하려고 하거나 표시하지 않을 수 있는 오류는 볼 수 없지만) 더 이상 로그가 전송되지 않습니다. 로그.
나는 매우 큰 텍스트 블록(기본적으로 dd
일부를 ing하여)을 출력하는 멍청한 쉘 스크립트를 사용하여 이 동작을 재현하려고 시도했지만 간단한 테스트로는 이 동작을 재현할 수 없었습니다./dev/urandom
base64 -w0
무엇이 잘못될 수 있는지, 어떤 다른 테스트를 실행할 수 있는지에 대한 아이디어를 주시면 감사하겠습니다.