NodeJS ExpressJS - how, um Fehler zu protokollieren, die für die Produktion server?
Wie kann ich melden Sie alle Fehler von ExpressJS-apps in einer Datei?
Ich weiß, ich kann mich einloggen, einen Schlanken Rahmen einfach mit 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;
});
In Ausdrücken, die ich in der Regel melden Sie den Fehler-Konsole für Entwicklung:
Model.findOne(options, function(err, doc) {
var output = {};
if (err) {
console.log("Error retrieving doc: " + err);
}
Aber in meinem Produktion server, ich brauche eine hilfreiche log-Datei, wenn die app schief geht.
Irgendwelche Ideen?
In Express app.js
, hat es dieser:
//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: {}
});
});
Aber wie schalte ich die Produktion auf? Ist es das gleiche wie monolog, die ich brauche?
- So einfach wie die Ausgabe der Fehlermeldung in eine Datei statt an die Konsole, so dass Sie auf diese Datei verweisen. stackoverflow.com/questions/8393636/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
winston ist eine beliebte Bibliothek für die Protokollierung.
Transportieren Sie alle Protokolle, die zu einer Datei oder halten Sie andere Dateien für Fehler -, debug-und info-logs.
Beispiel:
In den code:
Können Sie auch winston täglich drehen-Datei mit winston und drehen Sie Ihre log-Dateien basierend auf Größe oder Datum.
Können Sie entweder fügen Sie eine logging-Bibliothek wie morgan oder wenn Sie Ihre Knoten-Anwendung läuft unter einem Prozess-manager, wie pm2, dann pm2 wird verfolgen die Anmeldung für Sie. Ich habe nicht verwendet pm2 eine Tonne, aber was ich verstehen konnte Sie halten Sie
console.log
Aussagen die gleichen und pm2 wird, speichern Sie die Ausgabe aus, die Ihre app in log-Dateien für Sie. Lesen Sie mehr über pm2 logging-Funktionen hier.