Ben*_*ema 3 javascript logging angularjs
我怎样才能使Angular为其日志添加时间戳和类名?
像这样的东西:
$log.info('this log entry came from FooBar');
Run Code Online (Sandbox Code Playgroud)
" 9:37:18 pm,FooBar:这个日志条目来自FooBar "
我在网络上发现的例子要么不清楚,要么结合许多其他事情(如requirejs).我确实找到了一些进入Angular装饰器的例子,但我想知道是否有更简单的方法.
16-05-2015:此代码变成了一个名为angular-logger的GitHub项目.下面显示的代码已经过时了.
你不具备使用装饰.你可以用一些基本的javascript来欺骗Angular的$ log:
app.run(['$log', function($log) {
$log.getInstance = function(context) {
return {
log : enhanceLogging($log.log, context),
info : enhanceLogging($log.info, context),
warn : enhanceLogging($log.warn, context),
debug : enhanceLogging($log.debug, context),
error : enhanceLogging($log.error, context)
};
};
function enhanceLogging(loggingFunc, context) {
return function() {
var modifiedArguments = [].slice.call(arguments);
modifiedArguments[0] = [moment().format("dddd h:mm:ss a") + '::[' + context + ']> '] + modifiedArguments[0];
loggingFunc.apply(null, modifiedArguments);
};
}
}]);
Run Code Online (Sandbox Code Playgroud)
用法:
var logger = $log.getInstance('Awesome');
logger.info("This is awesome!");
Run Code Online (Sandbox Code Playgroud)
输出:
星期一下午9:37:18 :: [真棒]>真棒!
我使用Moment.js进行时间戳格式化.此示例使用Angular的模块运行块支持在其他任何开始运行之前配置应用程序.
对于更优雅和可配置的解决方案,这里是相同的日志增强器,但作为可配置的提供程序:
angular.module('app').provider('logEnhancer', function() {
this.loggingPattern = '%s - %s: ';
this.$get = function() {
var loggingPattern = this.loggingPattern;
return {
enhanceAngularLog : function($log) {
$log.getInstance = function(context) {
return {
log : enhanceLogging($log.log, context, loggingPattern),
info : enhanceLogging($log.info, context, loggingPattern),
warn : enhanceLogging($log.warn, context, loggingPattern),
debug : enhanceLogging($log.debug, context, loggingPattern),
error : enhanceLogging($log.error, context, loggingPattern)
};
};
function enhanceLogging(loggingFunc, context, loggingPattern) {
return function() {
var modifiedArguments = [].slice.call(arguments);
modifiedArguments[0] = [ sprintf(loggingPattern, moment().format("dddd h:mm:ss a"), context) ] + modifiedArguments[0];
loggingFunc.apply(null, modifiedArguments);
};
}
}
};
};
});
Run Code Online (Sandbox Code Playgroud)
要使用和配置它:
var app = angular.module('app', []);
app.config(['logEnhancerProvider', function(logEnhancerProvider) {
logEnhancerProvider.loggingPattern = '%s::[%s]> ';
}]);
app.run(['$log', 'logEnhancer', function($log, logEnhancer) {
logEnhancer.enhanceAngularLog($log);
}]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1916 次 |
最近记录: |