javascript - 自定义控制台日志功能,一个 console.log 包装器

标签 javascript debug-backtrace

function log( msgOrObj ){
    if(dev_mode){
        console.log({
            'message': msgOrObj,
            'caller': arguments.callee.caller.toString()
        });
    }
}

因此,我尝试编写一个简单的自定义控制台日志函数(如上所述)。但是,我正在努力寻找调用者来自哪个文件和行。我能看到的最多的是调用它的函数。

有人做过类似的事情吗?或者这甚至可能吗?

第 70 行的 somescript.js 中使用的示例:

log('some very important message!')

最佳答案

是的,但它非常 hacky 并且不是跨浏览器安全的。您可以以此为起点。它borrows from this answer .

window.trace = function stackTrace() {
    var err = new Error();
    return err.stack;
}

window.my_log = function (x) {
    var line = trace();
    var lines = line.split("\n");
    console.log(x + " " + lines[2].substring(lines[2].indexOf("("), lines[2].lastIndexOf(")") + 1))
}


window.my_log("What light through yonder window breaks?")

产生:

What light through yonder window breaks? (<anonymous>:2:42) 

关于javascript - 自定义控制台日志功能,一个 console.log 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20524700/

相关文章:

javascript - Android 应用程序和 Javascript 代码之间的舍入差异

javascript - 使用 mongoose 在 node.js 上进行单元测试的结构

c - 回溯日志中的堆栈帧 NULL

javascript - 如何阻止我的函数修改我传入的值?

javascript - 错误 : message. $delete 不是函数

javascript - Bootstrap 5 的按钮文本是黑色而不是像他们的演示那样的白色

c++ - 分析由于库故障而发生的崩溃的回溯

ios - 在 Debug模式下,记录的堆栈帧不支持控制台

linux - 如何从多核平台中的所有 CPU 获取调用跟踪