2017-03-27 9 views
3

どのようにエラーをExpressJSアプリケーションからファイルに記録できますか?NodeJS ExpressJS - 実動サーバーのエラーを記録する方法は?

私はhttps://github.com/Seldaek/monologで簡単にスリムなフレームワークをログに記録することができます知っている:

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

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

しかし、私の生産:エクスプレスで

$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; 
}); 

、私は通常開発用コンソールにエラーをログに記録しますサーバー、私はアプリが間違って行くときに役立つログファイルが必要です。

アイデア?生産者の1に

// 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: {} 
    }); 
}); 

しかし、どのように、私はターンでください:エクスプレスのapp.jsで

は、これを持っていますか?それは私が必要とするモノログと同じですか?

+1

このファイルを参照できるように、コンソールではなくファイルにエラーを出力するだけで簡単です。 http://stackoverflow.com/questions/8393636/node-log-in-a-file-instead-of-the-console – Maxwelll

答えて

2

morganのようなロギングライブラリを追加することもできますし、pm2のようなプロセスマネージャの下でノードアプリケーションを実行している場合は、pm2がログを記録します。私はpm2トンを使用していませんが、あなたが理解できるものから、console.logステートメントと同じものとpm2があなたのアプリケーションのログファイルにすべての出力を保存します。 pm2のログ機能については、hereを参照してください。

+0

PM2を使用しています。しかし、私は自分のコードの中で手動で管理することができるモノログのようなロガーを持つことを好む。 – laukok

5

winstonは、ロギングによく使用されるライブラリです。

すべてのログを1つのファイルに転送することも、エラー、デバッグ、情報ログ用に異なるファイルを保存することもできます。

例:コードで

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 daily rotate fileを使用することができます。

関連する問題