我是一位经验丰富的Java开发人员,负责收集Node.js并转向异步模型.除了伐木以外,大多数事情都很顺利.在使用express的Node.js中进行开发时,我在Java中找不到类似于log4j和NDC的任何内容.
我的目标是让每个日志语句自动添加以下信息:
[2013-11-07 11:17:04.615 serverScript INFO 7036 192.168.7.209]
这包括时间戳,编写此语句的js文件的名称(对于模块化节点应用程序),调试级别,进程ID(运行集群)和客户端的IP地址.
我可以在最初进入我的请求处理程序时编写它们,但是如果没有将一堆参数传播到每个被调用的函数,子例程中的记录器语句就没有信息.我知道我可以在每个初始化其名称的js文件中创建我的记录器实例,但我还没有找到客户端IP地址的解决方案.对于运行时间较长的请求,我在记录器中设置的地址会在下一个请求进入时被覆盖,因此记录的IP会被越过.
我看过温斯顿,但即使用它也无法解决这个问题.有没有人完成这个?当您可以按IP过滤以仅查看一个用户的活动时,跟踪字段问题非常有用.
[编辑:从参数传递解决方案测试,直到我学习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] …Run Code Online (Sandbox Code Playgroud)