🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
现在我们来实现日志功能,日志分为正常请求的日志和错误请求的日志,这两种日志都打印到终端并写入文件。 ## 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 目录下的其他配置文件则会被忽略。