NodeJS ExpressJS-如何记录生产服务器的错误? [英] NodeJS ExpressJS - how to log errors for the production server?

查看:117
本文介绍了NodeJS ExpressJS-如何记录生产服务器的错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将ExpressJS应用程序中的任何错误记录到文件中?

How can I log any errors from ExpressJS apps into a file?

我知道我可以使用 monolog 轻松记录Slim框架:

I know I can log a Slim framework easily with monolog:

$app->get('/tickets', function (Request $request, Response $response) {
    $this->logger->addInfo("Something interesting happened");

    $mapper = new Simon\TicketMapper($this->db);
    $tickets = $mapper->getTickets();

    $response->getBody()->write(var_export($tickets, true));
    return $response;
});

在Express中,我通常将错误记录到控制台以进行开发:

In Express, I usually log the error to console for development:

Model.findOne(options, function(err, doc) {

    var output = {};
    if (err) {
        console.log("Error retrieving doc: " + err);
    }

但是在我的生产服务器中,当应用出现错误时,我确实需要一个有用的日志文件.

But in my production server, I do need a helpful log file when the app goes wrong.

有什么想法吗?

在Express的app.js中,它具有以下内容:

In Express's app.js, it has this:

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {

  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: err
    });
  });

}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

但是我该如何打开制作的呢?是否与我需要的独白相同?

But how do I turn the production's one on? Is it the same as monolog that I need?

推荐答案

winston 很受欢迎用于记录的库.

winston is a popular library for logging.

您可以将所有日志传输到一个文件,也可以保留其他文件以获取错误,调试和信息日志.

You can transport all logs to one file or keep different files for error, debug and info logs.

示例:

  var winston = require('winston');

  var logger = new winston.Logger({
    level: 'error',
    transports: [
      new (winston.transports.File)({ filename: 'error.log' })
    ]
  });

在代码中:

logger.log('error', 'test error message %s', 'my string');

您还可以将 winston每日旋转文件与winston一起使用来旋转日志文件的大小或日期.

You can also use winston daily rotate file with winston to rotate your log files based on size or date.

这篇关于NodeJS ExpressJS-如何记录生产服务器的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆