现在我们来实现日志功能,日志分为正常请求的日志和错误请求的日志,这两种日志都打印到终端并写入文件。
## 4.13.1 winston 和 express-winston
我们使用 [winston](https://www.npmjs.com/package/winston) 和 [express-winston](https://www.npmjs.com/package/express-winston) 记录日志。新建 logs 目录存放日志文件,修改 index.js,在:
**index.js**
```
var pkg = require('./package');
```
下引入所需模块:
```
var winston = require('winston');
var 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/success.log`,将错误请求的日志打印到终端并写入了 `logs/error.log`。需要注意的是:记录正常请求日志的中间件要放到 `routes(app)` 之前,记录错误请求日志的中间件要放到 `routes(app)` 之后。
## 4.13.2 .gitignore
如果我们想把项目托管到 git 服务器上(如: [GitHub](https://github.com)),而不想把线上配置、本地调试的 logs 以及 node_modules 添加到 git 的版本控制中,这个时候就需要 .gitignore 文件了,git 会读取 .gitignore 并忽略这些文件。在 myblog 下新建 .gitignore 文件,添加如下配置:
**.gitignore**
```
config
!config/default.*
logs
npm-debug.log
node_modules
public/img
coverage
```
需要注意的是,通过设置:
```
config
!config/default.*
```
这样只有 config/default.js 会加入 git 的版本控制,而 config 目录下的其他配置文件则会被忽略。
- 使用 Express + MongoDB 搭建多人博客
- 1.1 Node.js 的安装与使用
- 1.2 MongoDB 的安装与使用
- 2.1 require
- 2.2 exports 和 module.exports
- 2.3 Promise
- 2.4 环境变量
- 2.5 package.json
- 2.6 npm 使用注意事项
- 3.1 初始化一个 Express 项目
- 3.2 路由
- 3.3 模板引擎
- 3.4 Express 浅析
- 4.1 开发环境
- 4.2 准备工作
- 4.3 配置文件
- 4.4 功能设计
- 4.5 页面设计
- 4.6 连接数据库
- 4.7 注册
- 4.8 登出与登录
- 4.9 文章
- 4.10 留言
- 4.11 404 页面
- 4.12 错误页面
- 4.13 日志
- 4.14 测试
- 4.15 部署