diff options
| author | Misko Hevery | 2011-11-02 16:32:46 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2011-11-14 16:39:33 -0800 | 
| commit | bd04316a89a0909e7a4e483839d573ce857f7622 (patch) | |
| tree | 0378c33976ba524b7090a3665cd7729638f1545e /src/service/log.js | |
| parent | ed36b9da3be338fe9eb36f3eeea901d6f51cd768 (diff) | |
| download | angular.js-bd04316a89a0909e7a4e483839d573ce857f7622.tar.bz2 | |
refactor(services): migrate angular.service -> module
Diffstat (limited to 'src/service/log.js')
| -rw-r--r-- | src/service/log.js | 126 | 
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']); +  }]; +} | 
