From c2319fddfff8e6dffaff9d35cde602514d11166b Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 22 Jul 2014 19:27:09 -0300 Subject: [PATCH 1/3] feat(ngLog): provides support to debug the application in chosen level ngLog can now log in window console based on a debug level, that can be redefined in LogProvider. Defaults to 'debug'. --- src/ng/log.js | 64 ++++++++++++++++++++++++++++++++++++++++++---- test/ng/logSpec.js | 5 ++-- 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/src/ng/log.js b/src/ng/log.js index ff4ec892c09c..d90f51600938 100644 --- a/src/ng/log.js +++ b/src/ng/log.js @@ -45,6 +45,7 @@ */ function $LogProvider(){ var debug = true, + level = 'debug', self = this; /** @@ -63,6 +64,24 @@ function $LogProvider(){ } }; + this.debugLevel = function(flag) { + if (isDefined(flag)) { + level = flag; + return this; + } else { + return level; + } + }; + + this.debugLevel = function(flag) { + if (flag) { + level = flag; + return this; + } else { + return level; + } + }; + this.$get = ['$window', function($window){ return { /** @@ -72,7 +91,15 @@ function $LogProvider(){ * @description * Write a log message */ - log: consoleLog('log'), + log: (function () { + var fn = consoleLog('log'); + + return function() { + if (level == 'debug' || level == 'error' || level == 'warn' || level == 'info' || level == 'log') { + fn.apply(self, arguments); + } + }; + }()), /** * @ngdoc method @@ -81,7 +108,15 @@ function $LogProvider(){ * @description * Write an information message */ - info: consoleLog('info'), + info: (function () { + var fn = consoleLog('info'); + + return function() { + if (level == 'debug' || level == 'error' || level == 'warn' || level == 'info') { + fn.apply(self, arguments); + } + }; + }()), /** * @ngdoc method @@ -90,7 +125,15 @@ function $LogProvider(){ * @description * Write a warning message */ - warn: consoleLog('warn'), + warn: (function () { + var fn = consoleLog('warn'); + + return function() { + if (level == 'debug' || level == 'error' || level == 'warn') { + fn.apply(self, arguments); + } + }; + }()), /** * @ngdoc method @@ -99,7 +142,15 @@ function $LogProvider(){ * @description * Write an error message */ - error: consoleLog('error'), + error: (function () { + var fn = consoleLog('error'); + + return function() { + if (level == 'debug' || level == 'error') { + fn.apply(self, arguments); + } + }; + }()), /** * @ngdoc method @@ -112,7 +163,9 @@ function $LogProvider(){ var fn = consoleLog('debug'); return function() { - if (debug) { + if ( + // debug || + level == 'debug') { fn.apply(self, arguments); } }; @@ -133,6 +186,7 @@ function $LogProvider(){ } function consoleLog(type) { + var console = $window.console || {}, logFn = console[type] || console.log || noop, hasApply = false; diff --git a/test/ng/logSpec.js b/test/ng/logSpec.js index 86d134bbdb74..8f194c610dde 100644 --- a/test/ng/logSpec.js +++ b/test/ng/logSpec.js @@ -1,9 +1,10 @@ /* global $LogProvider: false */ 'use strict'; -function initService(debugEnabled) { +function initService(debugEnabled, debugLevel) { return module(function($logProvider){ $logProvider.debugEnabled(debugEnabled); + $logProvider.debugLevel(debugLevel); }); } @@ -119,7 +120,7 @@ describe('$log', function() { describe("$log.debug", function () { - beforeEach(initService(false)); + beforeEach(initService(false, 'error')); it("should skip debugging output if disabled", inject( function(){ From 1ccae38e5f508f618174da5ce6f4465315cf8166 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 22 Jul 2014 19:34:31 -0300 Subject: [PATCH 2/3] chore(ngLog): remove duplicated debugLevel function --- src/ng/log.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/ng/log.js b/src/ng/log.js index d90f51600938..32c526f99d9b 100644 --- a/src/ng/log.js +++ b/src/ng/log.js @@ -73,15 +73,6 @@ function $LogProvider(){ } }; - this.debugLevel = function(flag) { - if (flag) { - level = flag; - return this; - } else { - return level; - } - }; - this.$get = ['$window', function($window){ return { /** From 8178326cef3d9dcec3d0531f18e3b43dd55ea1a1 Mon Sep 17 00:00:00 2001 From: Gabriel Gularte Date: Fri, 25 Jul 2014 00:09:31 -0300 Subject: [PATCH 3/3] chore(ngLog): reverses the hierarchy of the levels and add tests --- src/ng/log.js | 14 ++++++-------- test/ng/logSpec.js | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/ng/log.js b/src/ng/log.js index 32c526f99d9b..02796ed94d6b 100644 --- a/src/ng/log.js +++ b/src/ng/log.js @@ -45,7 +45,7 @@ */ function $LogProvider(){ var debug = true, - level = 'debug', + level = 'log', self = this; /** @@ -86,7 +86,7 @@ function $LogProvider(){ var fn = consoleLog('log'); return function() { - if (level == 'debug' || level == 'error' || level == 'warn' || level == 'info' || level == 'log') { + if (level == 'log') { fn.apply(self, arguments); } }; @@ -103,7 +103,7 @@ function $LogProvider(){ var fn = consoleLog('info'); return function() { - if (level == 'debug' || level == 'error' || level == 'warn' || level == 'info') { + if (level == 'log' || level == 'info') { fn.apply(self, arguments); } }; @@ -120,7 +120,7 @@ function $LogProvider(){ var fn = consoleLog('warn'); return function() { - if (level == 'debug' || level == 'error' || level == 'warn') { + if (level == 'log' || level == 'info' || level == 'warn') { fn.apply(self, arguments); } }; @@ -137,7 +137,7 @@ function $LogProvider(){ var fn = consoleLog('error'); return function() { - if (level == 'debug' || level == 'error') { + if (level == 'log' || level == 'info' || level == 'warn' || level == 'error') { fn.apply(self, arguments); } }; @@ -154,9 +154,7 @@ function $LogProvider(){ var fn = consoleLog('debug'); return function() { - if ( - // debug || - level == 'debug') { + if (debug) { fn.apply(self, arguments); } }; diff --git a/test/ng/logSpec.js b/test/ng/logSpec.js index 8f194c610dde..85e3c8e16a5f 100644 --- a/test/ng/logSpec.js +++ b/test/ng/logSpec.js @@ -120,7 +120,7 @@ describe('$log', function() { describe("$log.debug", function () { - beforeEach(initService(false, 'error')); + beforeEach(initService(false)); it("should skip debugging output if disabled", inject( function(){ @@ -179,4 +179,47 @@ describe('$log', function() { expect(errorArgs).toEqual(['abc', 'message\nsourceURL:123']); }); }); + + describe('$logLevel', function() { + + it('should log all levels if not defined', function(){ + $window.console = {log: log, + warn: warn, + info: info, + error: error, + debug: debug}; + }, + + function($log) { + $log.log(); + $log.info(); + $log.warn(); + $log.error(); + $log.debug(); + expect(logger).toEqual('log;info;warn;error;debug;'); + + }); + + it('should log only errors and warns if warn level is defined', function(){ + $window.console = {log: log, + warn: warn, + info: info, + error: error, + debug: debug}; + initService(true, 'warn'); + }, + + function($log) { + $log.log(); + $log.info(); + $log.warn(); + $log.error(); + $log.debug(); + expect(logger).toEqual('warn;error;debug;'); + + }); + + }); + + });