angularjs - 在运行时获取模块和 Controller |服务|指令名称

标签 angularjs logging

位于angular-logger ,我们正在尝试增强 $log,但我们希望以 Angular 模块和组件的名称进行工作而不进行更改。为此,我们需要在运行时获取 AngularJS 上下文,即模块名称 Controller 、服务指令 名字。

app.module("SampleModule").
   controller("ControllerOne", function ($log) {
      $log.debug("I am ready!")
   }).
   controller("ControllerTwo", function ($log) {
      $log.debug("I am ready!")
   });

默认$log输出:

> I am ready!
> I am ready!

如果我们能够在运行时获取模块和 Controller 名称,那么使用增强的$log我们可以获得更丰富的输出:

> SampleModule.ControllerOne: I am ready!
> SampleModule.ControllerTwo: I am ready!

最好的选择是在不更改 Controller 代码的情况下获取它。也许有办法获取有关接收 $log 依赖注入(inject)的实体的一些元信息?

有什么建议吗?

最佳答案

有一个similar question that I found在 SO 上,但该解决方案仅在使用 Controller 作为语法时才有效。

// a simple route with controller as syntax
$routeProvider.when(
    '/myRoute', 
    { 
        templateUrl: '/myRoute', 
        controller: 'ControllerOne as vm' 
    }
);

// controller
app.controller("ControllerOne", ['$log', function ControllerOne($log) {
    var vm = this;
    $log.log(vm.constructor.name); 
}]);

关于angularjs - 在运行时获取模块和 Controller |服务|指令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556328/

相关文章:

mysql - 交响乐 3.4 : how to log the history of user actions?

javascript - 使用 Watchify 时,Browserify + Babelify Gulp 任务不会终止

javascript - 无法对表中的日期列进行排序

javascript - 用于验证范围内的十进制值的正则表达式是什么 - 0 到 99999.00

javascript - 在 Angular 中使用 Http get 服务

java - 将 Azure Blob 存储与 java MVC 结合使用 Azure 网站

javascript - 单输入多条件 Angular 过滤器

java - 单行日志使用log4j打印类名、方法名和异常行号

R sink() : Error, 无法拆分消息连接

.net - 是否可以使用 System.Diagnostics.Trace 作为 .net 的公共(public)日志记录形式?