나는 내 자신의 질문에 대답하고 있습니다.
견본이 작동했지만 호스트에서 작동하는 perl의 Sys :: Syslog 모듈을 얻을 수 없었으며 호스트에 설치된 / usr / bin / logger가 원격 서버에 대한 로깅을 지원하지 않습니다 (util-linux-ng- 2.17.2).
그래서 내가 한 첫 번째 일은 로거 프로그램이 원격 로깅을 지원하는 util-linux-2.20.1의 소스 코드를 다운로드하는 것이 었습니다. 테스트 결과 로그 라인에 허용되는 문자 수에 제한이 있음이 분명해졌습니다. 소스 코드를 파고 들어 하드 코딩 된 400 자 제한을 찾았습니다. (나를 믿지 않는다면, 리눅스 시스템에서 "strings / usr / bin / logger | grep 400"을 실행하십시오).
이 제한은 아파치 유형의 로깅 (nodejs 포함)에는 허용되지 않으므로 코드를 수정하고 제한을 4096으로 늘 렸습니다. 또한이 명령을 사용하는 동안 옵션을 삽입 할 수있는 새로운 명령 줄 옵션을 추가했습니다. 각 로그 줄의 시작 부분에 텍스트 문자열. nodejs 로그에는 아파치에서 볼 수 있듯이 호스트 이름이 포함되어 있지 않기 때문에이 작업을 수행했습니다.
이 시점에서 "tail -F -n 0 [logfile] | ./modified_logger ...."로 쉘 스크립트를 실행할 수있었습니다. 그러나 파이프의 한쪽 또는 다른 쪽이 종료되면 전체 파이프가 종료 될 위험이 있기 때문에 감독 (daemontools) 또는 백그라운드에서이를 실행하는 것에 대해 약간의 우려가있었습니다. 또한 성능에 대해 걱정하지 않았습니다.
그래서 테일 기능과 로거 기능을 단일 실행 바이너리로 결합하여 Unix 파이프 또는 외부 프로그램을 사용할 필요가 없도록 결정했습니다. 나는 gnu coreutils에서 tail.c를 해킹하고 수정 된 로거 프로그램에 필요한 것을 통합 하여이 작업을 수행했습니다.
결과는 "파일 로거"라고하는 새로운 바이너리 (117k 크기)이며 하나 이상의 파일을 지속적으로 모니터링하고 UDP 또는 TCP를 통해 로컬 또는 원격 syslog에 각각의 새 줄을 기록합니다. 그것은 매력처럼 작동합니다. 약간의 벤치마킹을 수행 할 수 있었으며 VLAN과 몇 개의 물리적 스위치가있는 서브넷에서 syslog-ng를 실행하는 원격 서버에 약 3 초 동안 약 17,000 개의 회선 (1.8MB)을 기록합니다.
프로그램을 실행하려면 다음과 같은 작업을 수행하십시오 (포 그라운드, 백그라운드 또는 daemontools로 감독).
./filelogger -t '액세스'-d -p local1.info -n [원격 로그 호스트] -u / tmp / ignored -a $ (호스트 이름) / tmp / myfile1 / tmp / myfile2 ...
/ tmp / myfile1 및 / tmp / myfile2는 모니터중인 파일입니다.
"-a"는 내가 추가 한 새로운 옵션입니다. 이 경우 각 로그 줄의 시작 부분에 로컬 호스트 이름을 삽입합니다.
이 솔루션은 내가 질문을 할 때 찾고 있던 솔루션의 유형이었습니다. :)