각 트랜잭션을 기록해야하는 응용 프로그램이 있습니다. 충돌을 일으키는 원인에 대한 기록이 필요하기 때문에 모든 로그 메시지가 플러시됩니다. 동료들과 나는 로그 메시지가 프로세스를 벗어나도록 보장하면서 버퍼링의 성능 효과를 얻는 방법에 대해 궁금했습니다.
우리가 생각 해낸 것은 :
- 응용 프로그램이 쓸 수있는 FIFO를 만들고
- 를 통해 해당 FIFO의 내용을 일반 파일로 리디렉션합니다
cat.
즉, 일반적으로 무엇입니까 :
app --logfile logfile.txt
지금 :
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
이 접근 방식에 문제가 있습니까? 테스트 할 때 효과가 있었지만 원래 응용 프로그램이 충돌하더라도 메시지가 경로 재 지정 파일로 이동하는지 확인하고 싶습니다.
(우리는 응용 프로그램에 대한 소스 코드가 없으므로 프로그래밍 솔루션에 대해서는 의문의 여지가 없습니다. 또한 응용 프로그램에 쓰지 stdout않으므로 다른 명령에 직접 파이핑하는 것은 문제 syslog가 아닙니다 . .)
업데이트 : 현상금을 추가했습니다. 허용 대답은 할 수 없습니다 포함 logger간단한의 이유 logger입니다 하지 나에 대해 질문 한 내용. 원래 질문에서 알 수 있듯이 FIFO를 사용할 때만 문제를 찾고 있습니다.