Por solicitud de registro en Node.js

Soy un desarrollador de Java con experiencia que toma Node.js y hace el cambio al modelo asíncrono. La mayoría de las cosas van bien, excepto para el registro. No puedo encontrar nada similar a log4j y NDCs en Java mientras se desarrolla en Node.js con Express.

Mi objetivo es hacer que cada declaración de registro anteponga automáticamente la siguiente información:

[2013-11-07 11: 17: 04.615 serverScript INFO 7036 192.168.7.209]

Esto incluye la marca de tiempo, el nombre del archivo js que escribe esta declaración (para aplicaciones de nodos modularizados), el nivel de depuración, la ID del proceso (clústeres en ejecución) y la dirección IP del cliente.

Puedo hacer que escriba esto cuando ingresa inicialmente en mi controlador de solicitudes, pero sin propagar un conjunto de parámetros a cada función llamada, las declaraciones del registrador dentro de las subrutinas no tienen la información. Sé que puedo crear una instancia de mi registrador dentro de cada archivo js que inicializa su nombre, pero todavía tengo que encontrar una solución para la dirección IP del cliente. Para solicitudes de mayor duración, la dirección que establezco en mi registrador se sobrescribe cuando llega la siguiente solicitud, por lo que las direcciones IP registradas se cruzan.

He analizado Winston pero no he podido resolver este problema ni siquiera con él. ¿Alguien ha logrado esto? Es muy útil hacer un seguimiento de los problemas de campo cuando puede filtrar por IP para ver solo la actividad de un usuario.

[edit: prueba desde la solución de paso de parámetros hasta que aprenda el modo syslog]

[2013-11-07 14:29:28.641 server INFO  7527 192.168.7.209] Got request from 192.168.7.209 for /ionmed/executeQuery?
[2013-11-07 14:29:28.641 router INFO  7527 192.168.7.209] About to route a request for /ionmed/executeQuery, method=POST
[2013-11-07 14:29:28.642 router INFO  7527 192.168.7.209] getting POSTed data
[2013-11-07 14:29:28.642 router INFO  7527 192.168.7.209] POST params: {"sqlQuery":"select sleep(10)","sessionStart":"1383852558799","rand":"0.5510970998368581","jsessionid":"117DBAA89F599D923AF80D4AB171BDDF"}
[2013-11-07 14:29:28.642 requestHandlers INFO  7527 192.168.7.209] 'query' was called.
[2013-11-07 14:29:28.642 requestHandlers INFO  7527 192.168.7.209] select sleep(10)
[2013-11-07 14:29:30.673 server INFO  7527 192.168.7.217] Got request from 192.168.7.217 for /
[2013-11-07 14:29:30.673 router INFO  7527 192.168.7.217] About to route a request for /, method=GET
[2013-11-07 14:29:30.673 router INFO  7527 192.168.7.217] No request handler found for /; serving as file
[2013-11-07 14:29:30.673 router INFO  7527 192.168.7.217] Request handler 'serveFile' was called to get: /index.html
[192.168.7.217 Thu, 07 Nov 2013 19:29:30 GMT] HTTP/1.1 GET "/node/" 200 "Mozilla/5.0 (iPod; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
[2013-11-07 14:29:33.578 server INFO  7527 192.168.7.217] Got request from 192.168.7.217 for /
[2013-11-07 14:29:33.578 router INFO  7527 192.168.7.217] About to route a request for /, method=GET
[2013-11-07 14:29:33.578 router INFO  7527 192.168.7.217] No request handler found for /; serving as file
[2013-11-07 14:29:33.579 router INFO  7527 192.168.7.217] Request handler 'serveFile' was called to get: /index.html
[192.168.7.217 Thu, 07 Nov 2013 19:29:33 GMT] HTTP/1.1 GET "/node/" 200 "Mozilla/5.0 (iPod; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
[2013-11-07 14:29:38.644 requestHandlers INFO  7527 192.168.7.209] sending response
[192.168.7.209 Thu, 07 Nov 2013 19:29:38 GMT] HTTP/1.1 POST "/node/ionmed/executeQuery?" 200 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0"
[2013-11-07 14:29:41.540 server INFO  7527 192.168.7.217] Got request from 192.168.7.217 for /
[2013-11-07 14:29:41.541 router INFO  7527 192.168.7.217] About to route a request for /, method=GET
[2013-11-07 14:29:41.541 router INFO  7527 192.168.7.217] No request handler found for /; serving as file
[2013-11-07 14:29:41.541 router INFO  7527 192.168.7.217] Request handler 'serveFile' was called to get: /index.html
[192.168.7.217 Thu, 07 Nov 2013 19:29:41 GMT] HTTP/1.1 GET "/node/" 200 "Mozilla/5.0 (iPod; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
[2013-11-07 14:29:45.146 server INFO  7527 192.168.7.209] RLz6tmJ7KTH2R16VCVTX: bye {"user":"1"}
[2013-11-07 14:29:45.176 server INFO  7527 192.168.7.209] RLz6tmJ7KTH2R16VCVTX: disconnected

Ahora solo necesito descubrir cómo conseguir que el registrador de solicitudes rápidas esté en el mismo formato de entrada de línea que mi registrador interno hasta que todo se mueva a rsyslog.

Respuestas a la pregunta(3)

Su respuesta a la pregunta