【问题标题】:Incorrect logging message after override $log覆盖 $log 后的日志消息不正确
【发布时间】:2013-08-20 02:40:14
【问题描述】:

我正在尝试装饰 angular 的 $log 工厂以将消息的 timestamp 放入日志中。

到目前为止,它工作得很好,除了这种行为:

当我使用默认的 Angular 配置登录时,我收到:

对象 {name: "bryan", message: "was here"} 第三个参数的消息

Plunker

创建装饰器后,日志变成了这样:

["消息为", Object, "第三个参数"]

Plunker - 代码在这里

所以,对象没有展开到控制台,我需要点击消息才能看到完整的对象。

有人知道我错过了什么吗?或者知道更好的方法来做到这一点并将时间戳放在消息的开头?

【问题讨论】:

    标签: angularjs angularjs-log angularjs-decorator


    【解决方案1】:

    您需要将argument 数组扩展为warn() 的参数列表。您可以通过apply() 实现它。这只是一个 JavaScript 技巧。

    warn: function () {
        //create a new args. You can't modify arguments since it is controlled by AngularJS
        var args = [new Date()];
        angular.forEach(arguments, function (i) {
            args.push(i);
        })
        $delegate.warn.apply(null, args);
    }
    

    $delegate.warn.apply(null, args); 的计算结果为 $delegate.warn(args[0], args[1], ...);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多