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

feat($logProvider): add additional control over what gets logged #10585

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 106 additions & 6 deletions src/ng/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,77 @@
* Use the `$logProvider` to configure how the application logs messages
*/
function $LogProvider() {
var debug = true,
var log = true,
info = true,
warn = true,
error = true,
debug = true,
self = this;

/**
* @ngdoc method
* @name $logProvider#logEnabled
* @description
* @param {boolean=} flag enable or disable log level messages
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
this.logEnabled = function(flag) {
if (isDefined(flag)) {
log = flag;
return this;
} else {
return log;
}
};

/**
* @ngdoc method
* @name $logProvider#infoEnabled
* @description
* @param {boolean=} flag enable or disable info level messages
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
this.infoEnabled = function(flag) {
if (isDefined(flag)) {
info = flag;
return this;
} else {
return info;
}
};

/**
* @ngdoc method
* @name $logProvider#warnEnabled
* @description
* @param {boolean=} flag enable or disable warn level messages
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
this.warnEnabled = function(flag) {
if (isDefined(flag)) {
warn = flag;
return this;
} else {
return warn;
}
};

/**
* @ngdoc method
* @name $logProvider#errorEnabled
* @description
* @param {boolean=} flag enable or disable error level messages
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
this.errorEnabled = function(flag) {
if (isDefined(flag)) {
error = flag;
return this;
} else {
return error;
}
};

/**
* @ngdoc method
* @name $logProvider#debugEnabled
Expand All @@ -57,7 +125,7 @@ function $LogProvider() {
this.debugEnabled = function(flag) {
if (isDefined(flag)) {
debug = flag;
return this;
return this;
} else {
return debug;
}
Expand All @@ -72,7 +140,15 @@ function $LogProvider() {
* @description
* Write a log message
*/
log: consoleLog('log'),
log: (function() {
var fn = consoleLog('log');

return function() {
if (log) {
fn.apply(self, arguments);
}
};
}()),

/**
* @ngdoc method
Expand All @@ -81,7 +157,15 @@ function $LogProvider() {
* @description
* Write an information message
*/
info: consoleLog('info'),
info: (function() {
var fn = consoleLog('info');

return function() {
if (info) {
fn.apply(self, arguments);
}
};
}()),

/**
* @ngdoc method
Expand All @@ -90,7 +174,15 @@ function $LogProvider() {
* @description
* Write a warning message
*/
warn: consoleLog('warn'),
warn: (function() {
var fn = consoleLog('warn');

return function() {
if (warn) {
fn.apply(self, arguments);
}
};
}()),

/**
* @ngdoc method
Expand All @@ -99,7 +191,15 @@ function $LogProvider() {
* @description
* Write an error message
*/
error: consoleLog('error'),
error: (function() {
var fn = consoleLog('error');

return function() {
if (error) {
fn.apply(self, arguments);
}
};
}()),

/**
* @ngdoc method
Expand Down
100 changes: 100 additions & 0 deletions test/ng/logSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,106 @@ describe('$log', function() {
);
});

describe("$log.log", function() {

beforeEach(module(function($logProvider) {
$logProvider.logEnabled(false);
}));

it("should skip log 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('warn;info;error;debug;');
}
));

});

describe("$log.warn", function() {

beforeEach(module(function($logProvider) {
$logProvider.warnEnabled(false);
}));

it("should skip warn 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;info;error;debug;');
}
));

});

describe("$log.info", function() {

beforeEach(module(function($logProvider) {
$logProvider.infoEnabled(false);
}));

it("should skip info 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;error;debug;');
}
));

});

describe("$log.error", function() {

beforeEach(module(function($logProvider) {
$logProvider.errorEnabled(false);
}));

it("should skip error 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;debug;');
}
));

});

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

beforeEach(initService(false));
Expand Down