aboutsummaryrefslogtreecommitdiffstats
path: root/src/service/log.js
diff options
context:
space:
mode:
authorMisko Hevery2011-11-02 16:32:46 -0700
committerMisko Hevery2011-11-14 16:39:33 -0800
commitbd04316a89a0909e7a4e483839d573ce857f7622 (patch)
tree0378c33976ba524b7090a3665cd7729638f1545e /src/service/log.js
parented36b9da3be338fe9eb36f3eeea901d6f51cd768 (diff)
downloadangular.js-bd04316a89a0909e7a4e483839d573ce857f7622.tar.bz2
refactor(services): migrate angular.service -> module
Diffstat (limited to 'src/service/log.js')
-rw-r--r--src/service/log.js126
1 files changed, 70 insertions, 56 deletions
diff --git a/src/service/log.js b/src/service/log.js
index 29577166..59094c42 100644
--- a/src/service/log.js
+++ b/src/service/log.js
@@ -34,64 +34,78 @@
</doc:scenario>
</doc:example>
*/
-var $logFactory; //reference to be used only in tests
-angularServiceInject("$log", $logFactory = function($window){
- return {
- /**
- * @ngdoc method
- * @name angular.service.$log#log
- * @methodOf angular.service.$log
- *
- * @description
- * Write a log message
- */
- log: consoleLog('log'),
- /**
- * @ngdoc method
- * @name angular.service.$log#warn
- * @methodOf angular.service.$log
- *
- * @description
- * Write a warning message
- */
- warn: consoleLog('warn'),
+function $LogProvider(){
+ this.$get = ['$window', function($window){
+ return {
+ /**
+ * @ngdoc method
+ * @name angular.service.$log#log
+ * @methodOf angular.service.$log
+ *
+ * @description
+ * Write a log message
+ */
+ log: consoleLog('log'),
- /**
- * @ngdoc method
- * @name angular.service.$log#info
- * @methodOf angular.service.$log
- *
- * @description
- * Write an information message
- */
- info: consoleLog('info'),
+ /**
+ * @ngdoc method
+ * @name angular.service.$log#warn
+ * @methodOf angular.service.$log
+ *
+ * @description
+ * Write a warning message
+ */
+ warn: consoleLog('warn'),
- /**
- * @ngdoc method
- * @name angular.service.$log#error
- * @methodOf angular.service.$log
- *
- * @description
- * Write an error message
- */
- error: consoleLog('error')
- };
+ /**
+ * @ngdoc method
+ * @name angular.service.$log#info
+ * @methodOf angular.service.$log
+ *
+ * @description
+ * Write an information message
+ */
+ info: consoleLog('info'),
- function consoleLog(type) {
- var console = $window.console || {};
- var logFn = console[type] || console.log || noop;
- if (logFn.apply) {
- return function() {
- var args = [];
- forEach(arguments, function(arg){
- args.push(formatError(arg));
- });
- return logFn.apply(console, args);
- };
- } else {
- // we are IE, in which case there is nothing we can do
- return logFn;
+ /**
+ * @ngdoc method
+ * @name angular.service.$log#error
+ * @methodOf angular.service.$log
+ *
+ * @description
+ * Write an error message
+ */
+ error: consoleLog('error')
+ };
+
+ function formatError(arg) {
+ if (arg instanceof Error) {
+ if (arg.stack) {
+ arg = (arg.message && arg.stack.indexOf(arg.message) === -1) ?
+ 'Error: ' + arg.message + '\n' + arg.stack : arg.stack;
+ } else if (arg.sourceURL) {
+ arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line;
+ }
+ }
+ return arg;
+ }
+
+ function consoleLog(type) {
+ var console = $window.console || {};
+ var logFn = console[type] || console.log || noop;
+ if (logFn.apply) {
+ return function() {
+ var args = [];
+ forEach(arguments, function(arg){
+ args.push(formatError(arg));
+ });
+ return logFn.apply(console, args);
+ };
+ } else {
+ // we are IE, in which case there is nothing we can do
+ return logFn;
+ }
}
- }
-}, ['$window']);
+ }];
+}