私は自分の質問に答えています。
スウォッチは機能していたかもしれませんが、perlのSys :: Syslogモジュールをホストで機能させることができず、ホストにインストールされている/ usr / bin / loggerはリモートサーバーへのロギングをサポートしていません(util-linux-ng- 2.17.2)。
したがって、最初に行ったのは、ロガープログラムがリモートロギングをサポートするutil-linux-2.20.1のソースコードをダウンロードすることでした。テストの結果、ログ行で許可される文字数に制限があることが明らかになりました。ソースコードを掘り下げると、ハードコードされた400文字の制限が見つかりました。(私を信じていない場合は、任意のLinuxシステムで「strings / usr / bin / logger | grep 400」を実行してください)。
この制限は、Apacheタイプのロギング(nodejsを含む)では許容されないため、コードを変更して制限を4096に増やしました。その間、オプションを挿入できる新しいコマンドラインオプションも追加しました各ログ行の先頭のテキスト文字列。これは、Apacheで表示される可能性があるように、nodejsログにホスト名が含まれていないためです。
この時点で、「tail -F -n 0 [logfile] | ./modified_logger ....」を使用してシェルスクリプトを実行でき、動作しました。しかし、これを監視(daemontools)から、またはバックグラウンドで実行することについて、いくつかの懸念がありました。パイプの片側または反対側が終了すると、パイプ全体が終了するリスクがあるためです。パフォーマンスについても(まだテストされていませんが)懸念がありました。
そのため、尾の機能とロガーの機能を単一の実行可能バイナリに組み合わせて、Unixパイプや外部プログラムを使用する必要を回避することにしました。これを行うには、gnu coreutilsのtail.cをハッキングし、必要なものを変更されたロガープログラムに組み込みます。
結果は、「filelogger」と呼んでいる新しいバイナリ(117kサイズ)で、1つ以上のファイルを継続的に監視し、UDPまたはTCPを介してローカルまたはリモートのsyslogに新しい各行を記録します。それは魅力のように働きます。私は少しベンチマークを行うことができ、vlanとそれらの間にいくつかの物理スイッチがあるサブネット間で約3秒で約17,000行(1.8MB)をsyslog-ngを実行しているリモートサーバーに記録しました。
プログラムを実行するには、次のようなことを実行します(フォアグラウンド、バックグラウンド、またはdaemontoolsで監視)。
./filelogger -t 'access' -d -p local1.info -n [リモートログホスト] -u / tmp / ignored -a $(ホスト名)/ tmp / myfile1 / tmp / myfile2 ...
/ tmp / myfile1および/ tmp / myfile2は、監視されているファイルです。
「-a」は私が追加した新しいオプションです。この場合、各ログ行の先頭にローカルホスト名を挿入します。
この解決策は、質問をしたときに私が探していた解決策のタイプであり、結局のところ、自分で作るまで存在しませんでした。:)