现在我们来实现日志功能,日志分为正常请求的日志和错误请求的日志,我们希望实现这两种日志都打印到终端并写入文件。

4.13.1 winston 和 express-winston

我们使用 winstonexpress-winston 记录日志。

新建 logs 目录存放日志文件,修改 index.js,在:

index.js

const pkg = require('./package')

码农进阶题库 - 每天一道面试题 or Js小知识@Js中文网

每天弄懂一道面试题(Javascript小知识)来鞭策自己学习思考,每天进步一点,帮助你提高你的代码编写质量

下引入所需模块:

const winston = require('winston')
const expressWinston = require('express-winston')

将:

// 路由
routes(app)

修改为:

// 正常请求的日志
app.use(expressWinston.logger({
  transports: [
    new (winston.transports.Console)({
      json: true,
      colorize: true
    }),
    new winston.transports.File({
      filename: 'logs/success.log'
    })
  ]
}))
// 路由
routes(app)
// 错误请求的日志
app.use(expressWinston.errorLogger({
  transports: [
    new winston.transports.Console({
      json: true,
      colorize: true
    }),
    new winston.transports.File({
      filename: 'logs/error.log'
    })
  ]
}))

刷新页面看一下终端输出及 logs 下的文件。 可以看出:winston 将正常请求的日志打印到终端并写入了 logs/success.log,将错误请求的日志打印到终端并写入了 logs/error.log

注意:记录正常请求日志的中间件要放到 routes(app) 之前,记录错误请求日志的中间件要放到 routes(app) 之后。

4.13.2 .gitignore

如果我们想把项目托管到 git 服务器上(如: GitHub),而不想把线上配置、本地调试的 logs 以及 node_modules 添加到 git 的版本控制中,这个时候就需要 .gitignore 文件了,git 会读取 .gitignore 并忽略这些文件。在 myblog 下新建 .gitignore 文件,添加如下配置:

.gitignore

config/*
!config/default.*
npm-debug.log
node_modules
coverage

需要注意的是,通过设置:

config/*
!config/default.*

这样只有 config/default.js 会加入 git 的版本控制,而 config 目录下的其他配置文件则会被忽略,因为把线上配置加入到 git 是一个不安全的行为,通常你需要本地或者线上环境手动创建 config/production.js,然后添加一些线上的配置(如:mongodb 配置)即可覆盖相应的 default 配置。

注意:后面讲到部署到 Heroku 时,因为无法登录到 Heroku 主机,所以可以把以下两行删掉,将 config/production.js 也加入 git 中。

config/*
!config/default.*

然后在 public/img 目录下创建 .gitignore:

# Ignore everything in this directory
*
# Except this file
!.gitignore

这样 git 会忽略 public/img 目录下所有上传的头像,而不忽略 public/img 目录。同理,在 logs 目录下创建 .gitignore 忽略日志文件:

# Ignore everything in this directory
*
# Except this file
!.gitignore

上一节:4.12 错误页面

下一节:4.14 测试

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""