javascript - 在正确的行上,获取控制台包装以记录消息

  显示原文与译文双语对照的内容
0 0

这个问题已经有了如下答案:

我为控制台日志创建了一个包装器。 我无法获得它以显示包装函数从中调用的记录行号。 我看过其他帖子来处理这个问题,但我似乎无法得到他们所提到的。 它们基本上将 console.log 绑定到外部函数,但是我需要在它的使用之前做它的他工作 inside 。

我的安装有可能?

错误免费JsFiddle错误

var logger = (function (window, console) {
//logger object
 function logger() {
//use to initialize the logger
 function init() {
 fixConsole();
 }
//fix missing console
 function fixConsole() {
 var logmethod;
 var noop = function () { };
 var logmethods = [
 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
 'timeStamp', 'trace', 'warn'
 ];
 var length = logmethods.length;
 console = (window.console = window.console || {});
 while (length--) {
 logmethod = logmethods[length];
//Only stub undefined methods.
 if (!console[logmethod]) {
 console[logmethod] = noop;
 }
 }
 }
//initializing the logger
 init();
 }
//logging methods
 logger.prototype = {
 info: function (msg, title) {
 if (title)
 console.log(title +":" + msg);
 else
 console.log(msg);
 }
 }
//create logger
 function _create() {
//create logger
 var log = new logger();
//return logger
 return log;
 }
//exposed functions
 return {
 create: _create
 }
})(window, console);
var log = logger.create();
log.info('Hello, I am trying to get the logger to log under the line number info is used on.');
log.info('For instance I want line number 75 to show.');
<h1> Press F12 and look at the console to see</h1>
时间:原作者:5个回答

0 0

我不确定你想要什么。

但是如果你想要获得正确的行号,可以能需要跟踪堆栈。

尝试 console.trace() 函数。

原作者:
0 0

确切地说,我得到了错误号,包括捕获它所需的正规表达式 。

 var err = getErrorObject();
 var caller_line = err.stack.split("n")[4];
 var index = caller_line.indexOf("at");
 var clean = caller_line.slice(index+2, caller_line.length);
 var number = clean.match(/(?!:)d*(?=:)/g);
 console.log(number[0]);
原作者:
...