Estou respondendo minha própria pergunta.
A amostra pode ter funcionado, mas não consegui que o módulo Sys :: Syslog do perl funcionasse no host, e o / usr / bin / logger instalado no host não suporta o log no servidor remoto (util-linux-ng- 2.17.2)
Portanto, a primeira coisa que fiz foi fazer o download do código-fonte do util-linux-2.20.1, para o qual o programa logger suporta log remoto. Após o teste, ficou claro que há um limite imposto ao número de caracteres permitido na linha de log. Ao pesquisar no código fonte, encontrei um limite de 400 caracteres codificado. (Se você não acredita em mim, execute "strings / usr / bin / logger | grep 400" em qualquer sistema Linux).
Esse limite não é aceitável para log do tipo apache (incluindo nodejs), portanto, modifiquei o código e aumentei o limite para 4096. Enquanto estava nele, também adicionei uma nova opção de linha de comando que permite inserir um opcional sequência de texto no início de cada linha de log. Fiz isso porque os logs do nodejs não incluem o nome do host como se poderia ver no apache.
Nesse ponto, eu poderia executar um script de shell com "tail -F -n 0 [arquivo de log] | ./modified_logger ...." e funcionou. Mas eu tinha algumas preocupações sobre executar isso da supervisão (daemontools) ou mesmo em segundo plano, porque se um ou os outros lados do tubo terminarem, haverá o risco de todo o tubo terminar. Eu também tinha preocupações (embora não testadas) sobre desempenho.
por isso, decidi combinar a funcionalidade tail com a funcionalidade logger em um único binário executável que ignoraria a necessidade de usar pipes Unix ou programas externos. Eu fiz isso cortando o tail.c do gnu coreutils e incorporando o que eu preciso no programa de logger modificado.
O resultado é um novo binário (tamanho de 117k) que estou chamando de "filelogger" e que monitora continuamente um ou mais arquivos e registra cada nova linha em um syslog local ou remoto, via UDP ou TCP. Ele funciona como um encanto. Consegui fazer um pequeno teste comparativo e ele registra cerca de 17.000 linhas (1,8 MB) em cerca de 3 segundos em sub-redes com uma vlan e alguns comutadores físicos entre elas, em um servidor remoto executando o syslog-ng.
Para executar o programa, faça algo como o seguinte (em primeiro plano, em segundo plano ou supervisionado com daemontools):
./filelogger -t 'access' -d -p local1.info -n [host de log remoto] -u / tmp / ignorado -a $ (nome do host) / tmp / myfile1 / tmp / myfile2 ...
/ tmp / myfile1 e / tmp / myfile2 são os arquivos que estão sendo monitorados.
O "-a" é a nova opção que adicionei. Nesse caso, insiro o nome do host local no início de cada linha de log.
Essas soluções eram exatamente o tipo de solução que eu estava procurando quando fiz a pergunta e, como se viu, não existia até que eu a fiz. :)