分享: 将代码行数和文件名封装到日志系统,支持winston log4js
发布于 8 年前 作者 danielsss 6826 次浏览 来自 分享

不废话,看代码

Object.defineProperty(global, '__stack', {
 get: function(){
 let orig = Error.prepareStackTrace;
 Error.prepareStackTrace = function(_, stack){ return stack; };
 let err = new Error;
 Error.captureStackTrace(err, arguments.callee);
 let stack = err.stack;
 Error.prepareStackTrace = orig;
 return stack;
 }
});
const wrap = function(level){
 let _type = global.log[level];
 global.log[level] = function(){
 let file = `[File: ${path.basename(__stack[1].getFileName())}]`;
 let line = `[Line: ${__stack[1].getLineNumber()}]`;
 Array.prototype.unshift.call(arguments, file);
 Array.prototype.unshift.call(arguments, line);
 _type.apply(global.log, arguments);
 };
};
_.forEach(['info', 'silly', 'debug','verbose', 'warn', 'error'], wrap);

日志格式如下

Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 42] [File: www] Http server listening on port 8080
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 52] [File: www] Https server listening on port 8443
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 43] [File: client.js] Redis cache server is connected with address 192.168.66.145:6379
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 43] [File: client.js] Redis logger server is connected with address 192.168.66.145:6379
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 198] [File: client.js] Mongodb connected to mongodb://192.168.66.145:27017/cms
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 183] [File: client.js] MongoDB db.visitcms.createIndexes note: all indexes already exist
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 193] [File: client.js] MongoDB db.downloads.createIndexes note: all indexes already exist
Mon Jul 17 2017 10:05:50 GMT+0800 (CST) - info: [Line: 25] [File: models.js] { '0': 'Executing (default): SELECT 1+1 AS result' }
1 回复

感觉这样使用,在正式环境会有性能问题。

回到顶部

AltStyle によって変換されたページ (->オリジナル) /