Неверное сообщение журнала после переопределения $log
Я пытаюсь украсить ангуляр $log
фабрика поставить timestamp
сообщения в журнале.
До сих пор работает довольно хорошо, за исключением этого поведения:
Когда я регистрируюсь с конфигурацией по умолчанию angular, я получаю:
сообщение для объекта {имя: "Брайан", сообщение: "был здесь"} третий аргумент
После создания декоратора логи стали такими:
["сообщение для", объект, "третий аргумент"]
Плункер - код здесь
Таким образом, Объект не был расширен до консоли, и мне нужно нажать на сообщение, чтобы увидеть полный объект.
Кто-нибудь знает, что мне не хватает? Или знаете лучший способ сделать это и поставить метку времени в начале сообщения?
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], ...);
,