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

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

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

有人做过类似的事情吗?还是有可能吗?

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

log('some very important message!')
约翰

所以,这就是我最后的目的(其中shout是仅在开发人员模式下运行的定制功能):

function log( msgOrObj ){
    if(dev_mode){
        if( typeof(window.console) != 'undefined' ){
            try {  invalidfunctionthrowanerrorplease(); }
            catch(err) {  var logStack = err.stack;  }
            var fullTrace = logStack.split('\n');
            for( var i = 0 ; i < fullTrace.length ; ++i ){
                fullTrace[i] = fullTrace[i].replace(/\s+/g, ' ');
            }
            var caller = fullTrace[1],
                callerParts = caller.split('@'),
                line = '';

            //CHROME & SAFARI
            if( callerParts.length == 1 ){
                callerParts = fullTrace[2].split('('), caller = false;
                //we have an object caller
                if( callerParts.length > 1 ){
                    caller = callerParts[0].replace('at Object.','');
                    line = callerParts[1].split(':');
                    line = line[2];
                }
                //called from outside of an object
                else {
                    callerParts[0] = callerParts[0].replace('at ','');
                    callerParts = callerParts[0].split(':');
                    caller = callerParts[0]+callerParts[1];
                    line = callerParts[2];
                }
            }
            //FIREFOX
            else {
                var callerParts2 = callerParts[1].split(':');
                line = callerParts2.pop();
                callerParts[1] = callerParts2.join(':');
                caller = (callerParts[0] == '') ? callerParts[1] : callerParts[0];
            }
            console.log( ' ' );
            console.warn( 'Console log: '+ caller + ' ( line '+ line +' )' );
            console.log( msgOrObj );
            console.log({'Full trace:': fullTrace });
            console.log( ' ' );
        } else {
            shout('This browser does not support console.log!')
        }
    }
}

log()在应用程序的其余部分之前声明时,可以在应用程序内的任何位置调用,并为开发人员提供所需的所有信息,而且不会耗尽开发人员模式。

http://webconfiguration.blogspot.co.uk/2013/12/javascript-console-log-wrapper-with.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Log4j2自定义包装器

来自分类Dev

Log4j2自定义包装器

来自分类Dev

Xcode不打印日志/控制台消息。显示一个黑色的调试器

来自分类Dev

类型可变的console.log的Typescript包装器

来自分类Dev

使用一个 bash 脚本运行两个节点服务器并接收控制台日志

来自分类Dev

自定义Log4j2包装器和输出

来自分类Dev

自定义Log4j2包装器和输出

来自分类Dev

如何在Typescript中为Angular2编写console.log包装器?

来自分类Dev

在控制台中禁用自定义记录器打印(Log4j2)

来自分类Dev

调试功能包装器

来自分类Dev

自定义VSCode以使用控制台模拟器而不是命令提示符

来自分类Dev

控制台输出流的自定义文本编写器在外部类中不起作用

来自分类Dev

自定义迭代器包装了另一个迭代器:迭代经过基础的最终迭代器而不进行检查?

来自分类Dev

为 angular ui grid 中的所有自定义过滤器设置一个控制器

来自分类Dev

我可以在js中创建自定义控制台日志功能吗?

来自分类Dev

量角器控制台日志

来自分类Dev

设计一个好的C ++包装器类,它包装了多种功能

来自分类Dev

我的Owin控制台项目从哪里知道另一个库中的控制器?

来自分类Dev

查看Firebase服务器功能中的控制台日志

来自分类Dev

每个资源一个Web API控制器还是更少的具有更多自定义操作的控制器?

来自分类Dev

Android Studio:“使用默认的gradle包装器”与“使用可自定义的gradle包装器”

来自分类Dev

Chrome Javascript控制台未输出功能console.log,为什么?

来自分类Dev

在一个自定义的wordpress插件中包装twitter引导程序

来自分类Dev

如何在具有两个自定义UITableViewCells的一个视图控制器中创建两个表视图?

来自分类Dev

ServiceStack的两个Log Implementations控制台和文件/事件日志

来自分类Dev

CakePHP控制器自定义功能无法识别

来自分类Dev

如何在没有* bluebird 的情况下控制台.log 一个promisified mongoose 查询

来自分类Dev

在自定义类中包装记录器功能时,显示正确的funcName

来自分类Dev

自动装箱是否比自定义包装器类型更好?

Related 相关文章

  1. 1

    Log4j2自定义包装器

  2. 2

    Log4j2自定义包装器

  3. 3

    Xcode不打印日志/控制台消息。显示一个黑色的调试器

  4. 4

    类型可变的console.log的Typescript包装器

  5. 5

    使用一个 bash 脚本运行两个节点服务器并接收控制台日志

  6. 6

    自定义Log4j2包装器和输出

  7. 7

    自定义Log4j2包装器和输出

  8. 8

    如何在Typescript中为Angular2编写console.log包装器?

  9. 9

    在控制台中禁用自定义记录器打印(Log4j2)

  10. 10

    调试功能包装器

  11. 11

    自定义VSCode以使用控制台模拟器而不是命令提示符

  12. 12

    控制台输出流的自定义文本编写器在外部类中不起作用

  13. 13

    自定义迭代器包装了另一个迭代器:迭代经过基础的最终迭代器而不进行检查?

  14. 14

    为 angular ui grid 中的所有自定义过滤器设置一个控制器

  15. 15

    我可以在js中创建自定义控制台日志功能吗?

  16. 16

    量角器控制台日志

  17. 17

    设计一个好的C ++包装器类,它包装了多种功能

  18. 18

    我的Owin控制台项目从哪里知道另一个库中的控制器?

  19. 19

    查看Firebase服务器功能中的控制台日志

  20. 20

    每个资源一个Web API控制器还是更少的具有更多自定义操作的控制器?

  21. 21

    Android Studio:“使用默认的gradle包装器”与“使用可自定义的gradle包装器”

  22. 22

    Chrome Javascript控制台未输出功能console.log,为什么?

  23. 23

    在一个自定义的wordpress插件中包装twitter引导程序

  24. 24

    如何在具有两个自定义UITableViewCells的一个视图控制器中创建两个表视图?

  25. 25

    ServiceStack的两个Log Implementations控制台和文件/事件日志

  26. 26

    CakePHP控制器自定义功能无法识别

  27. 27

    如何在没有* bluebird 的情况下控制台.log 一个promisified mongoose 查询

  28. 28

    在自定义类中包装记录器功能时,显示正确的funcName

  29. 29

    自动装箱是否比自定义包装器类型更好?

热门标签

归档