我非常喜欢使用Angular的服务来处理我的Angular应用程序。因此,使用$log
进行日志记录似乎是一个很自然的选择。它比console.log()
有许多好处,就像我在生产环境中省略调试日志的方式一样。
但有一件事我很遗憾,我想知道我是否能克服这一点。我曾经在我的应用程序中使用console.group
/ console.groupCollapsed
和console.groupEnd
来调试迭代器时清理我的控制台。
我尝试了以下装饰器,但它甚至没有接近(当然也没有雪茄)所需的行为:
app.config([ '$provide', function($provide) {
// Use the `decorator` solution to substitute or attach behaviors to
// original service instance; @see angular-mocks for more examples....
$provide.decorator('$log', [ '$delegate', function($delegate) {
// Save the original $log.debug()
var debugFn = $delegate.debug;
$delegate.debug = function() {
var args = [].slice.call(arguments),
now = new Date(),
logtime = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds() + '.' + now.getMilliseconds()
// Prepend timestamp
args[0] = logtime + ' - ' + args[0];
// Call the original with the output prepended with formatted timestamp
debugFn.apply(null, args)
};
$delegate.group = function() {
var args = [].slice.call(arguments),
now = new Date(),
logtime = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds() + '.' + now.getMilliseconds()
// Prepend timestamp
args[0] = ' --> ' + args[0];
// Call the original with the output prepended with formatted timestamp
debugFn.apply(null, args)
};
return $delegate;
}]);
}]);
有没有办法让Angular $log
更好地模仿这种行为?