Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit c7e82bf

Browse files
committed
added log enablers/disablers for all logger types on $logProvider
made jshint happy
1 parent ea6fc6e commit c7e82bf

File tree

2 files changed

+212
-7
lines changed

2 files changed

+212
-7
lines changed

src/ng/log.js

+102-4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
*/
4646
function $LogProvider(){
4747
var debug = true,
48+
error = true,
49+
warn = true,
50+
info = true,
51+
log = true,
4852
self = this;
4953

5054
/**
@@ -63,6 +67,69 @@ function $LogProvider(){
6367
}
6468
};
6569

70+
/**
71+
* @ngdoc method
72+
* @name $logProvider#errorEnabled
73+
* @description
74+
* @param {boolean=} flag enable or disable error level messages
75+
* @returns {*} current value if used as getter or itself (chaining) if used as setter
76+
*/
77+
this.errorEnabled = function(flag) {
78+
if (isDefined(flag)){
79+
error = flag;
80+
return this;
81+
} else {
82+
return error;
83+
}
84+
};
85+
86+
/**
87+
* @ngdoc method
88+
* @name $logProvider#warnEnabled
89+
* @description
90+
* @param {boolean=} flag enable or disable warn level messages
91+
* @returns {*} current value if used as getter or itself (chaining) if used as setter
92+
*/
93+
this.warnEnabled = function(flag) {
94+
if (isDefined(flag)){
95+
warn = flag;
96+
return this;
97+
} else {
98+
return warn;
99+
}
100+
};
101+
102+
/**
103+
* @ngdoc method
104+
* @name $logProvider#infoEnabled
105+
* @description
106+
* @param {boolean=} flag enable or disable info level messages
107+
* @returns {*} current value if used as getter or itself (chaining) if used as setter
108+
*/
109+
this.infoEnabled = function(flag) {
110+
if (isDefined(flag)){
111+
info = flag;
112+
} else {
113+
return info;
114+
}
115+
};
116+
117+
/**
118+
* @ngdoc method
119+
* @name $logProvider#logEnabled
120+
* @description
121+
* @param {boolean=} flag enable or disable log level messages
122+
* @returns {*} current value if used as getter or itself (chaining) if used as setter
123+
*/
124+
this.logEnabled = function(flag) {
125+
if (isDefined(flag)){
126+
log = flag;
127+
return this;
128+
} else {
129+
return log;
130+
}
131+
};
132+
66133
this.$get = ['$window', function($window){
67134
return {
68135
/**
@@ -72,16 +139,31 @@ function $LogProvider(){
72139
* @description
73140
* Write a log message
74141
*/
75-
log: consoleLog('log'),
142+
log: (function () {
143+
var fn = consoleLog('log');
76144

145+
return function() {
146+
if (log) {
147+
fn.apply(self, arguments);
148+
}
149+
};
150+
}()),
77151
/**
78152
* @ngdoc method
79153
* @name $log#info
80154
*
81155
* @description
82156
* Write an information message
83157
*/
84-
info: consoleLog('info'),
158+
info: (function () {
159+
var fn = consoleLog('info');
160+
161+
return function() {
162+
if (info) {
163+
fn.apply(self, arguments);
164+
}
165+
};
166+
}()),
85167

86168
/**
87169
* @ngdoc method
@@ -90,7 +172,15 @@ function $LogProvider(){
90172
* @description
91173
* Write a warning message
92174
*/
93-
warn: consoleLog('warn'),
175+
warn: (function () {
176+
var fn = consoleLog('warn');
177+
178+
return function() {
179+
if (warn) {
180+
fn.apply(self, arguments);
181+
}
182+
};
183+
}()),
94184

95185
/**
96186
* @ngdoc method
@@ -99,7 +189,15 @@ function $LogProvider(){
99189
* @description
100190
* Write an error message
101191
*/
102-
error: consoleLog('error'),
192+
error: (function () {
193+
var fn = consoleLog('error');
194+
195+
return function() {
196+
if (error) {
197+
fn.apply(self, arguments);
198+
}
199+
};
200+
}()),
103201

104202
/**
105203
* @ngdoc method

test/ng/logSpec.js

+110-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
/* global $LogProvider: false */
22
'use strict';
33

4-
function initService(debugEnabled) {
4+
function initService(enableDict) {
55
return module(function($logProvider){
6-
$logProvider.debugEnabled(debugEnabled);
6+
$logProvider.logEnabled(enableDict.log);
7+
$logProvider.infoEnabled(enableDict.info);
8+
$logProvider.warnEnabled(enableDict.warn);
9+
$logProvider.errorEnabled(enableDict.error);
10+
$logProvider.debugEnabled(enableDict.debug);
711
});
812
}
913

14+
1015
describe('$log', function() {
1116
var $window, logger, log, warn, info, error, debug;
1217

@@ -119,7 +124,9 @@ describe('$log', function() {
119124

120125
describe("$log.debug", function () {
121126

122-
beforeEach(initService(false));
127+
beforeEach(initService({
128+
debug: false
129+
}));
123130

124131
it("should skip debugging output if disabled", inject(
125132
function(){
@@ -156,6 +163,31 @@ describe('$log', function() {
156163
}}});
157164
});
158165

166+
it('should skip error output if disabled', function(){
167+
168+
initService({
169+
error: false
170+
});
171+
172+
inject(
173+
function(){
174+
$window.console = {log: log,
175+
warn: warn,
176+
info: info,
177+
error: error,
178+
debug: debug};
179+
},
180+
function($log){
181+
$log.log();
182+
$log.warn();
183+
$log.info();
184+
$log.error();
185+
$log.debug();
186+
expect(logger).toEqual('log;warn;info;debug;');
187+
}
188+
);
189+
});
190+
159191

160192
it('should pass error if does not have trace', function() {
161193
$log.error('abc', e);
@@ -178,4 +210,79 @@ describe('$log', function() {
178210
expect(errorArgs).toEqual(['abc', 'message\nsourceURL:123']);
179211
});
180212
});
213+
describe("$log.warn", function () {
214+
215+
beforeEach(initService({
216+
warn: false
217+
}));
218+
219+
it("should skip debugging output if disabled", inject(
220+
function(){
221+
$window.console = {log: log,
222+
warn: warn,
223+
info: info,
224+
error: error,
225+
debug: debug};
226+
},
227+
function($log) {
228+
$log.log();
229+
$log.warn();
230+
$log.info();
231+
$log.error();
232+
$log.debug();
233+
expect(logger).toEqual('log;info;error;debug;');
234+
}
235+
));
236+
237+
});
238+
describe("$log.info", function () {
239+
240+
beforeEach(initService({
241+
info: false
242+
}));
243+
244+
it("should skip debugging output if disabled", inject(
245+
function(){
246+
$window.console = {log: log,
247+
warn: warn,
248+
info: info,
249+
error: error,
250+
debug: debug};
251+
},
252+
function($log) {
253+
$log.log();
254+
$log.warn();
255+
$log.info();
256+
$log.error();
257+
$log.debug();
258+
expect(logger).toEqual('log;warn;error;debug;');
259+
}
260+
));
261+
262+
});
263+
describe("$log.log", function () {
264+
265+
beforeEach(initService({
266+
log: false
267+
}));
268+
269+
it("should skip debugging output if disabled", inject(
270+
function(){
271+
$window.console = {log: log,
272+
warn: warn,
273+
info: info,
274+
error: error,
275+
debug: debug};
276+
},
277+
function($log) {
278+
$log.log();
279+
$log.warn();
280+
$log.info();
281+
$log.error();
282+
$log.debug();
283+
expect(logger).toEqual('warn;info;error;debug;');
284+
}
285+
));
286+
287+
});
181288
});

0 commit comments

Comments
 (0)