再走Node路: (篇八) express & koa 中进行日志记录

17 篇文章 4 订阅

node路继续,我们上一次说到了使用原生的node如何对我们的项目进行日志的记录,在看此篇文章前,推荐先看如何使用原生的node进行日志记录,因为这里我们不会再说到原理的东西,毕竟之前我们已经说到了,这里我们直接使用morgan在两大框架中进行日志的记录:

  • express 脚手架安装的项目中,已经进行了基本的日志记录了,包括在koa中,也是使用了一个koa-logger在开发环境下进行日志的记录, 但这些日志都是打印在控制台的,在开发环境下我们也只需要打印在控制台即可,但是当项目上线后,我们就还是需要写入到文件中了,那么我们就介绍下如何配置morgan将我们的日志记录到文件中:(注: 在express中使用morgan和在koa中使用morgan其实是一模一样的,所以我们只介绍一种就好了,这里还是使用的express)
  1. 由于在express脚手架中已经默认装上了morgan,所以我们就无需再配置安装了.
  2. express中的morgan的默认配置如下:
const logger = require("morgan")
// .........

app.use(logger("dev"))
  • 其实它省略了它的默认的第二个参数,它还可以接受一个参数,默认如下所示:
app.use(logger("dev", {
	stream: process.stdout    
}))
  • 这里的stream其实就是我们上次中说到的流,而他的默认配置参数: process.stdout 表示的是标准的输出,这里可以理解就是输入到控制台上;
  1. 修改morgan的第二个参数配置进行日志记录到文件:
  • 思路: 我们只需将morgan的第二个参数配置成一个写入流,它的stream就会将日志信息写入到我们指定的写入流文件中:
// 引入fs创建写入流
const fs = require("fs")
const path = require("path")
// .....

// 进行morgan配置:
const fileName = path.join(__dirname, "logs", "access.log")
// 创建写入流:
const writeStream = fs.createWriteStream(fileName, {
	flags: "a"
})
app.use(logger("dev", {
	stream: writeStream
}))
  • 经过上述简单的配置,我们再访问时,就会将日志信息记录到我们的logs文件夹下的access.logs文件中去。 morgan的第一个参数是日志信息的配置,"dev"的信息如下:
    :method :url :status :response-time ms - :res[content-length]
    这是开发环境简单的日志信息,在线上环境下推荐使用的是: “conbined”(信息包括:)
    :remote-addr - :remote-user [:date[clf]] “:method :url HTTP/:http-version” :status :res[content-length] “:referrer” “:user-agent”

这些信息我们可以在github上查找morgan进行查看:
而我们的线上和开发环境的日志记录是有区别的,我们的开发环境打印到控制台即可,线上环境上才需要写入到文件中,所以我们可以使用cross-env进行线上和线下环境日志的不同的处理,具体如下:

const ENV = process.env.NODE_ENV
if (ENV !== 'production') {
  app.use(logger('dev', { 
    stream: process.stdout    // 默认配置: 将日志流输出到控制台,precess.stdout
  }));
} else {
  // 若是线上环境
  const logFileName = path.join(__dirname, 'logs', 'access.log')
  const writeStream = fs.createWriteStream(logFileName, {     // 创建文件的写入流
    flags: 'a'
  })
  app.use(logger('combined', {     // dev 环境下: 输出
    stream: writeStream    // 传递给一个写入流,将实际的日志写入到这个写入流中
  }));
}
  • 在koa中我们使用的是 koa-morgan, koa中需要进行自行的安装,安装后的配置和express中是一样的,就不再赘述了,下次我们说的是安全问题,关于一些xss注入的处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值