Files
iblog2/utility/logger.js
振云 (Percy) 573b253c2b found写成fount了。
修改单词拼写错误
2017-11-09 09:26:12 +08:00

65 lines
1.7 KiB
JavaScript

var winston = require('winston');
var dbPath = require('../config').DbPath;
// var dbPath = process.env.MONGOLAB_URI;
var os = require('os');
require('winston-mongodb').MongoDB;
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
json: true,
colorize: true,
level: 'error',
handleExceptions: true
}),
new (winston.transports.MongoDB)({
db: dbPath,
level: 'info', //会记录info、warn、error3个级别的日志
handleExceptions: true
})
],
exitOnError: false
});
/**
* 记录错误日志
* @param req 请求对象
* @param err 错误对象
*/
exports.errLogger = function (req, err) {
var obj = {},
message = err.message;
obj.process = {
pid: process.pid,
uid: process.getuid ? process.getuid() : null,
gid: process.getgid ? process.getgid() : null,
cwd: process.cwd(),
execPath: process.execPath,
version: process.version,
argv: process.argv,
memoryUsage: process.memoryUsage()
};
obj.os = {
hostname: os.hostname(),
loadavg: os.loadavg(),
uptime: os.uptime()
};
obj.stack = err.stack && err.stack.split('\n');
obj.code = err.status || 500;
var query = {};
for (var q in req.query) {
query[q] = req.query[q];
}
obj.req = {
baseUrl: req.baseUrl,
originalUrl: req.originalUrl,
query: query,
body: req.body,
ip: req.ip,
route: req.route
};
if (!message && obj.code === 404) {
message = 'not found "' + req.originalUrl + '"';
}
logger.error(message, obj);
};