aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/log.js46
-rw-r--r--test/ng/logSpec.js51
2 files changed, 89 insertions, 8 deletions
diff --git a/src/ng/log.js b/src/ng/log.js
index 1b552da8..2a58d442 100644
--- a/src/ng/log.js
+++ b/src/ng/log.js
@@ -33,7 +33,33 @@
</example>
*/
+/**
+ * @ngdoc object
+ * @name ng.$logProvider
+ * @description
+ * Use the `$logProvider` to configure how the application logs messages
+ */
function $LogProvider(){
+ var debug = true,
+ self = this;
+
+ /**
+ * @ngdoc property
+ * @name ng.$logProvider#debugEnabled
+ * @methodOf ng.$logProvider
+ * @description
+ * @param {string=} flag enable or disable debug level messages
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ */
+ this.debugEnabled = function(flag) {
+ if (isDefined(flag)) {
+ debug = flag;
+ return this;
+ } else {
+ return debug;
+ }
+ };
+
this.$get = ['$window', function($window){
return {
/**
@@ -74,7 +100,25 @@ function $LogProvider(){
* @description
* Write an error message
*/
- error: consoleLog('error')
+ error: consoleLog('error'),
+
+ /**
+ * @ngdoc method
+ * @name ng.$log#debug
+ * @methodOf ng.$log
+ *
+ * @description
+ * Write a debug message
+ */
+ debug: (function () {
+ var fn = consoleLog('debug');
+
+ return function() {
+ if (debug) {
+ fn.apply(self, arguments);
+ }
+ }
+ }())
};
function formatError(arg) {
diff --git a/test/ng/logSpec.js b/test/ng/logSpec.js
index 8b872bb1..b416e044 100644
--- a/test/ng/logSpec.js
+++ b/test/ng/logSpec.js
@@ -1,7 +1,13 @@
'use strict';
+function initService(debugEnabled) {
+ return module(function($logProvider){
+ $logProvider.debugEnabled(debugEnabled);
+ });
+ }
+
describe('$log', function() {
- var $window, logger, log, warn, info, error;
+ var $window, logger, log, warn, info, error, debug;
@@ -12,6 +18,7 @@ describe('$log', function() {
warn = function() { logger+= 'warn;'; };
info = function() { logger+= 'info;'; };
error = function() { logger+= 'error;'; };
+ debug = function() { logger+= 'debug;'; };
$provide.provider('$log', $LogProvider);
$provide.value('$exceptionHandler', angular.mock.rethrow);
@@ -23,14 +30,16 @@ describe('$log', function() {
$window.console = {log: log,
warn: warn,
info: info,
- error: error};
+ error: error,
+ debug: debug};
},
function($log) {
$log.log();
$log.warn();
$log.info();
$log.error();
- expect(logger).toEqual('log;warn;info;error;');
+ $log.debug();
+ expect(logger).toEqual('log;warn;info;error;debug;');
}
));
@@ -44,7 +53,8 @@ describe('$log', function() {
$log.warn();
$log.info();
$log.error();
- expect(logger).toEqual('log;log;log;log;');
+ $log.debug();
+ expect(logger).toEqual('log;log;log;log;log;');
}
));
@@ -55,6 +65,7 @@ describe('$log', function() {
$log.warn();
$log.info();
$log.error();
+ $log.debug();
}
));
@@ -64,22 +75,48 @@ describe('$log', function() {
log.apply = log.call =
warn.apply = warn.call =
info.apply = info.call =
- error.apply = error.call = null;
+ error.apply = error.call =
+ debug.apply = debug.call = null;
$window.console = {log: log,
warn: warn,
info: info,
- error: error};
+ error: error,
+ debug: debug};
},
function($log) {
$log.log.apply($log);
$log.warn.apply($log);
$log.info.apply($log);
$log.error.apply($log);
- expect(logger).toEqual('log;warn;info;error;');
+ $log.debug.apply($log);
+ expect(logger).toEqual('log;warn;info;error;debug;');
})
);
+ describe("$log.debug", function () {
+
+ beforeEach(initService(false));
+
+ it("should skip debugging output if disabled", inject(
+ function(){
+ $window.console = {log: log,
+ warn: warn,
+ info: info,
+ error: error,
+ debug: debug};
+ },
+ function($log) {
+ $log.log();
+ $log.warn();
+ $log.info();
+ $log.error();
+ $log.debug();
+ expect(logger).toEqual('log;warn;info;error;');
+ }
+ ));
+
+ });
describe('$log.error', function() {
var e, $log, errorArgs;