Sails.js HOWTO:实现HTTP请求的日志记录

时间:2014-02-11 12:34:19

标签: sails.js

Sails.js的默认日志记录很差,没有显示http请求日志(即使是详细的)。实现http请求登录到控制台的最佳方法是什么,以便我可以看到我是否收到格式错误的请求? Expressjs的默认日志记录就足够了。

我更喜欢Sails.js配置方式,而不是改变源代码方法。

有没有人有这方面的经验。我的谷歌搜索似乎奇怪地缺乏信息。

在Mac OSX上运行Sails v0.9.8。

4 个答案:

答案 0 :(得分:24)

没有用于记录每个请求的Sails配置选项,但您可以在config/routes.js的顶部添加一个快速记录路由,该路由可以解决这个问题:

// config/routes.js
'/*': function(req, res, next) {sails.log.verbose(req.method, req.url); next();}

答案 1 :(得分:17)

可能为时已晚,但是为了将来有关此问题的参考,我使用Sails 0.11并且您可以在中间件中,config/http.js文件中配置

添加此功能(实际上它是一个例子)

// Logs each request to the console
requestLogger: function (req, res, next) {
    console.log("Requested :: ", req.method, req.url);
    return next();
},

并在order var:

上设置它
order: [
  'startRequestTimer',
  'cookieParser',
  'session',
  'requestLogger',  // Just here
  'bodyParser',
  'handleBodyParserError',
  'compress',
  'methodOverride',
  'poweredBy',
  '$custom',
  'router',
  'www',
  'favicon',
  '404',
  '500'
]

答案 2 :(得分:3)

我将sails-hook-requestlogger模块分叉,将所有请求日志(访问日志)写入文件。

sails-hook-requestlogger-file

你所要做的只是npm install sails-hook-requestlogger-file,你很高兴去!

用法

只需正常抬起您的应用程序,您的所有服务器请求都将被记录,并提供响应时间等有用信息直接进入您的控制台。默认情况下,它在您的开发环境中激活,但在生产中停用。

配置

默认情况下,配置存在于sails.config.requestloggerfile中 您可以创建config/requestlogger.js并覆盖这些默认值:

Parameter        Type        Details
format           ((string))  Defines which logging format to use. Deaults to dev.
logLocation      ((string))  Defines where to log: console or file. Defaults to console.
fileLocation     ((string))  Location of file relative to project root (if file is specified in logLocation. This has no effect if console is specified in logLocation.
inDevelopment    ((boolean)) Whether or not to log requests in development environment. Defaults to true.
inProduction     ((boolean)) Whether or not to log requests in production environment Defaults to false.

示例config/requestlogger.js文件:

module.exports.requestloggerfile = {
 //see: https://github.com/expressjs/morgan#predefined-formats for more formats
  format: ':remote-addr - [:date[clf]] ":method :url" :status :response-time ms ":user-agent"',
  logLocation: 'file',
  fileLocation: '/var/log/myapp/access.log',
  inDevelopment: true,
  inProduction: true
};

希望它能帮到某人:)

答案 3 :(得分:0)

我发现这符合我的需求 - 它使用摩根模块进行Express并将它全部挂钩:https://www.npmjs.com/package/sails-hook-requestlogger