morgan_morgan的安装与使用

  • node.js的HTTP请求记录器中间件

基本使用

  • morgan(format,options)
    
  • 使用预定义的格式字符串

    • morgan('tiny')
      
  • 使用预定义令牌的格式字符串

    • morgan(':method :url :status :res[content-length] - :response-time ms')
      
  • 使用自定义格式函数

    • morgan(function (tokens, req, res) {
        return [
          tokens.method(req, res),
          tokens.url(req, res),
          tokens.status(req, res),
          tokens.res(req, res, 'content-length'), '-',
          tokens['response-time'](req, res), 'ms'
        ].join(' ')
      })
      
  • 配置属性

    • immediate: 根据请求而不是响应写入日志行。这意味着即使服务器崩溃,请求也会被记录,但来自响应的数据(如响应代码、内容长度等)无法被记录。

    • skip: 函数来确定是否跳过日志记录,默认为false。这个函数将被称为skip(req,res)。

      • // EXAMPLE: only log error responses
        morgan('combined', {
          skip: function (req, res) { return res.statusCode < 400 }
        })
        
    • stream: 用于写入日志行的输出流,默认为process.stdout。

预定义格式

  • 提供了各种预定义格式:

    • combined: 标准Apache组合日志输出。

      • :remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
        
    • common: 标准Apache通用日志输出。

      • :remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]
        
    • dev: 按响应状态着色的简明输出,以供开发使用。:status标记的颜色为绿色表示成功代码,红色表示服务器错误代码,黄色表示客户端错误代码,青色表示重定向代码,而非彩色表示信息代码。

      • :method :url :status :response-time ms - :res[content-length]
        
    • short: 短于默认值,还包括响应时间。

      • :remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms
        
    • tiny: 最小输出。

      • :method :url :status :res[content-length] - :response-time ms
        

Tokens

  • 创建新的tokens

    • 要定义令牌,只需使用名称和回调函数调用morgan.token()。此回调函数应返回一个字符串值。在这种情况下,返回的值可用作“:type”:

    • morgan.token('type', function (req, res) { return req.headers['content-type'] })
      
    • 使用与现有令牌相同的名称调用morgan.token()将覆盖该令牌定义。 令牌函数的调用需要参数req和res,表示HTTP请求和HTTP响应。此外,令牌可以接受它选择自定义行为的进一步参数。

posted @ 2023-09-08 00:03  Syinho  阅读(62)  评论(0编辑  收藏  举报