您的位置:首页 > Web前端 > Node.js

NodeJS + Express 最新的框架刷新页面在Node关闭控制台输出转为文件流输出

2019-05-24 10:25 465 查看

Morgan 之前的log4js是有区分控制台打印和文件流打印(type: 'console', // 控制台输出、type: 'dateFile', // 文件输出)

express框架morgan默认在node控制台输出,Morgan对于开发阶段的网站来说,日志打印可以及时帮我们发现错误,但是会影响到服务器内存,可以启动两个node分别启动两个express项目,一个有输出(Morgan未剔除),另一个无输出,打开任务管理器,你会发现有输出的CPU和内容会一直往上升,会影响到流畅性。

有些人可能会担心,如果我发布的网站,没有打印日志的话,我没有办法排查错误

1.可以打印到txt文件里面,如果想要每天记录到目录 中的一个日志文件中。请看官网吧

   https://www.npmjs.com/package/morgan

   app.use(logger('dev')) 在node控制台输出的命令,剔除该语句,控制台不再输出,在文件流中输出,请看代码

  下列代码以供参考 

[code]        var logger = require('morgan');
// app.use(logger('dev')); //打印到控制台,将该代码移除

var accessLogStream = fs.createWriteStream(path.join(__dirname, 'log/access.log'), { flag: 'a' });
// 创建一个写文件流,并且保存在当前文件夹的access.log文件中
var errorLog = fs.createWriteStream(path.join(__dirname,'log/error.log'), {flags : 'a'});
logger.format('hcsy', '[hcsy] :method :url :status');
logger.token('type', function (req, res) { return req.headers['content-type'] })
app.use(logger('short', { stream: accessLogStream }));
//设置开启文件流,并且指明文件流的对象

        app.use(logger('combined', {stream : accessLogStrea}));// 打印到access.log文件里面

2.express网站发布会增加一个forever或者pm2来守护进程

同上剔除morgan控制台输出代码,整个模块不引入也行,直接用forever里面提供日志的打印口令,比如:forever start -l forever.log -e err.log -a ./bin/www,err.log 输出错误的内容,其他的自己去看forever官网吧

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: