lau*_*kok 6 error-log node.js express
如何将ExpressJS应用程序中的任何错误记录到文件中?
我知道我可以使用monolog轻松记录Slim框架:
$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;
});
Run Code Online (Sandbox Code Playgroud)
在Express中,我通常将错误记录到控制台进行开发:
Model.findOne(options, function(err, doc) {
var output = {};
if (err) {
console.log("Error retrieving doc: " + err);
}
Run Code Online (Sandbox Code Playgroud)
但是在我的生产服务器中,当应用程序出错时,我确实需要一个有用的日志文件.
有任何想法吗?
在Express中app.js,它具有:
// 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: {}
});
});
Run Code Online (Sandbox Code Playgroud)
但是我该如何改变生产呢?和我需要的独白一样吗?
温斯顿是一个受欢迎的伐木图书馆.
您可以将所有日志传输到一个文件,也可以为错误,调试和信息日志保留不同的文件.
例:
var winston = require('winston');
var logger = new winston.Logger({
level: 'error',
transports: [
new (winston.transports.File)({ filename: 'error.log' })
]
});
Run Code Online (Sandbox Code Playgroud)
在代码中:
logger.log('error', 'test error message %s', 'my string');
Run Code Online (Sandbox Code Playgroud)
您还可以使用winston每日旋转文件与winston根据大小或日期旋转日志文件.
| 归档时间: |
|
| 查看次数: |
8211 次 |
| 最近记录: |