Ich beantworte meine eigene Frage.
Swatch hat möglicherweise funktioniert, aber ich konnte das Sys :: Syslog-Modul von Perl nicht auf dem Host zum Laufen bringen, und der auf dem Host installierte / usr / bin / logger unterstützt die Protokollierung auf dem Remote-Server nicht (util-linux-ng- 2.17.2).
Als erstes habe ich den Quellcode für util-linux-2.20.1 heruntergeladen, für den das Logger-Programm die Remote-Protokollierung unterstützt. Beim Testen stellte sich heraus, dass die Anzahl der in der Protokollzeile zulässigen Zeichen begrenzt ist. Beim Durchsuchen des Quellcodes fand ich eine fest codierte Beschränkung auf 400 Zeichen. (Wenn Sie mir nicht glauben, führen Sie "strings / usr / bin / logger | grep 400" auf einem beliebigen Linux-System aus.)
Dieses Limit ist für die Apache-Protokollierung (einschließlich NodeJS) nicht akzeptabel. Daher habe ich den Code geändert und das Limit auf 4096 erhöht. Während ich dabei war, habe ich auch eine neue Befehlszeilenoption hinzugefügt, mit der eine Option eingefügt werden kann Textzeichenfolge am Anfang jeder Protokollzeile. Ich habe dies getan, weil die NodeJS-Protokolle nicht den Hostnamen enthalten, wie man es in Apache sehen würde.
Zu diesem Zeitpunkt konnte ich ein Shell-Skript mit "tail -F -n 0 [logfile] | ./modified_logger ...." ausführen und es funktionierte. Ich hatte jedoch einige Bedenken, dies von Supervise (Daemontools) oder sogar im Hintergrund aus auszuführen, denn wenn die eine oder andere Seite des Rohrs endet, besteht das Risiko, dass das gesamte Rohr endet. Ich hatte auch Bedenken (wenn auch nicht getestet) hinsichtlich der Leistung.
Daher habe ich beschlossen, die Tail-Funktionalität mit der Logger-Funktionalität in einer einzigen ausführbaren Binärdatei zu kombinieren, die die Verwendung von Unix-Pipes oder externen Programmen umgehen würde. Ich habe dies getan, indem ich tail.c von gnu coreutils gehackt und das, was ich brauche, in das modifizierte Logger-Programm integriert habe.
Das Ergebnis ist eine neue Binärdatei (117 KB), die ich "Filelogger" nenne und die kontinuierlich eine oder mehrere Dateien überwacht und jede neue Zeile entweder über UDP oder TCP in einem lokalen oder Remote-Syslog protokolliert. Es wirkt wie ein Zauber. Ich konnte ein kleines Benchmarking durchführen und es protokolliert ungefähr 17.000 Zeilen (1,8 MB) in ungefähr 3 Sekunden über Subnetze mit einem VLAN und ein paar physischen Switches zwischen ihnen auf einem Remote-Server, auf dem syslog-ng ausgeführt wird.
Um das Programm auszuführen, gehen Sie wie folgt vor (entweder im Vordergrund, im Hintergrund oder überwacht mit Daemontools):
./filelogger -t 'access' -d -p local1.info -n [entfernter Loghost] -u / tmp / ignoriert -a $ (Hostname) / tmp / myfile1 / tmp / myfile2 ...
/ tmp / myfile1 und / tmp / myfile2 sind die zu überwachenden Dateien.
Das "-a" ist die neue Option, die ich hinzugefügt habe. In diesem Fall füge ich den lokalen Hostnamen am Anfang jeder Protokollzeile ein.
Diese Lösung war genau die Art von Lösung, nach der ich gesucht habe, als ich die Frage gestellt habe, und wie sich herausstellte, gab es sie erst, als ich sie selbst gemacht habe. :) :)