内置node.js中的访问日志(快速框架)

Iva*_*gin 14 logging access-log node.js express

我在想,如果Node.js的(或快递框架)的任何类型的内置访问日志一样的Grails有例子吗?

我有grags应用程序在tomcat上运行,它会自动生成一个/apache-tomcat-7.0.42/logs/localhost_access_log.2013.10.30.txt文件,其中有关于请求响应的日志,如下所示:

[30/Oct/2013:00:00:01 +0000] [my-ip-address] [http-bio-8080-exec-18] "GET /my-service/check HTTP/1.0" [200] [took: 1 milis]  
Run Code Online (Sandbox Code Playgroud)

这些日志由系统自动写入,我不必担心.

那么node.js怎么样?

谢谢你的帮助!

伊万

whi*_*win 26

在较新版本的Express(编写本文时为4.0.0)中,记录器不再是Express的一部分,因此您必须手动将其作为依赖项包含在内.它现在被称为摩根.

所以,在package.json,添加摩根作为依赖:

"dependencies": {
  ...
  "morgan": "*"
  ...
}
Run Code Online (Sandbox Code Playgroud)

在Express配置中,添加:

app.use(require('morgan')('dev'));
Run Code Online (Sandbox Code Playgroud)

现在,日志记录应该像以前一样工作.:-)

  • @Dalinaum 那么这是给你的。:-) (2认同)

小智 10

截至目前,大多数中间件(如记录器)不再与快递捆绑在一起,必须单独安装.

简答:首先,安装morgan:

npm install morgan
Run Code Online (Sandbox Code Playgroud)

然后用它来记录:

app = express();
var morgan  = require('morgan')
...
app.use(morgan('combined'))
Run Code Online (Sandbox Code Playgroud)

文档在这里.


Lud*_*son 8

编辑截至发稿时,4.0.0这个解决方案显然已经不够了.查看whirlwin的答案,了解更新的解决方案.

您可以使用 app.use(express.logger());

记录在这里:http://www.senchalabs.org/connect/logger.html