Включить имена модулей и контроллеров AngularJS в вывод $log?

Я изучаю варианты ведения журналов и соглашения в AngularJS. Я хотел бы мой $log вывод, чтобы содержать как module а также controller имена (аналогично регистраторам в Log4j). С кодом ниже, я смог ввести controller имя в $scope

var app = angular.module("demo", []);

app.config(['$provide', function ($provide) {
    $provide.decorator('$controller', [
        '$delegate',
        function ($delegate) {
            return function(constructor, locals) {
                if (angular.isString(constructor)) {
                    locals.$scope.controllerName =  constructor;
                }
                return $delegate(constructor, locals);
            }
        }]);
}]);

app.controller('SampleCtrl', ['$scope', '$log', function ($scope, $log) {
    $log.log("[" + app.name + "." + $scope.controllerName +"] got here");
}]);

Я хотел бы решить эту проблему лучше. В частности:

  1. Есть ли лучший способ получить доступ к controller назовите, добавив его в $scope?
  2. Есть ли способ получить module имя вместо получения "демо" из .name свойство модуля app?
  3. Подобно Enhancing $ log в AngularJs, это простой способ, который является лучшим способом для вставки форматирования, например, добавив "[module.controller]" в $log.log() звонки?

0 ответов

Другие вопросы по тегам