Estoy respondiendo mi propia pregunta.
La muestra podría haber funcionado, pero no pude hacer que el módulo Sys :: Syslog de perl funcione en el host, y el / usr / bin / logger que se instaló en el host no admite el registro en el servidor remoto (util-linux-ng- 2.17.2).
Entonces, lo primero que hice fue descargar el código fuente de util-linux-2.20.1 para el cual el programa registrador admite el registro remoto. Tras la prueba, se hizo evidente que hay un límite impuesto en la cantidad de caracteres permitidos en la línea de registro. Al profundizar en el código fuente, encontré un límite de 400 caracteres codificado. (Si no me cree, ejecute "strings / usr / bin / logger | grep 400" en cualquier sistema Linux).
Este límite no es aceptable para el registro de tipo apache (incluidos los nodejs), por lo que modifiqué el código y aumenté el límite a 4096. Mientras lo hacía, también agregué una nueva opción de línea de comandos que permite insertar una opción cadena de texto al comienzo de cada línea de registro. Hice esto porque los registros de nodejs no incluyen el nombre de host como se podría ver en apache.
En este punto, podría ejecutar un script de shell con "tail -F -n 0 [logfile] | ./modified_logger ...." y funcionó. Pero tenía algunas preocupaciones acerca de ejecutar esto desde supervise (daemontools) o incluso en segundo plano, porque si uno u otro lado de la tubería termina, entonces existe el riesgo de que toda la tubería termine. También tenía preocupaciones (aunque no probadas) sobre el rendimiento.
así que decidí combinar la funcionalidad de la cola con la funcionalidad del registrador en un solo binario ejecutable que evitaría la necesidad de usar tuberías Unix o programas externos. Lo hice pirateando tail.c desde gnu coreutils e incorporando lo que necesito en el programa de registro modificado.
El resultado es un nuevo binario (tamaño de 117k) al que llamo "registrador de archivos" y que monitorea continuamente uno o más archivos y registra cada nueva línea en un syslog local o remoto, ya sea a través de UDP o TCP. Funciona a las mil maravillas. Pude hacer un pequeño benchmarking y registra aproximadamente 17,000 líneas (1.8MB) en aproximadamente 3 segundos a través de subredes con un vlan y un par de conmutadores físicos entre ellos, en un servidor remoto que ejecuta syslog-ng.
para ejecutar el programa, debe hacer algo como lo siguiente (ya sea en primer plano, en segundo plano o supervisado con daemontools):
./filelogger -t 'acceso' -d -p local1.info -n [control remoto] -u / tmp / ignorado -a $ (nombre de host) / tmp / myfile1 / tmp / myfile2 ...
/ tmp / myfile1 y / tmp / myfile2 son los archivos que se monitorean.
La "-a" es la nueva opción que agregué. En este caso, inserto el nombre de host local al comienzo de cada línea de registro.
Esta solución era exactamente el tipo de solución que estaba buscando cuando hice la pregunta y, como resultó, no existía hasta que la hice yo mismo. :)