Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用$logProvider登录模块的配置块?_Javascript_Angularjs_Angularjs Service - Fatal编程技术网

Javascript 是否可以使用$logProvider登录模块的配置块?

Javascript 是否可以使用$logProvider登录模块的配置块?,javascript,angularjs,angularjs-service,Javascript,Angularjs,Angularjs Service,我想在调试时将日志消息输出到控制台。在控制器中工作正常,但无法在模块配置块中工作,例如 angular.module('MyApp', []) .run(function($state){ // run stuff here }); .config(function($logProvider){ $log.debug('Config debug message'); }); 我得到一个错误: error TypeError: Cannot read proper

我想在调试时将日志消息输出到控制台。在控制器中工作正常,但无法在模块配置块中工作,例如

angular.module('MyApp', [])
  .run(function($state){
    // run stuff here
  });
  .config(function($logProvider){
    $log.debug('Config debug message');
  });
我得到一个错误:

error TypeError: Cannot read property 'debug' of undefined
是否可以在模块的配置块中使用logProvider?

在配置阶段访问的日志用于配置日志服务,或者您可以使用注入
$provide
来更改/利用logservice的行为。日志服务本身尚未在您的模块
MyApp
中实例化。您可以从core
ng
获取一个记录器实例,并将其用于调试

你可以做:-

 .config(function(){
     var $log =  angular.injector(['ng']).get('$log')
     $log.debug('Config debug message');
  });
$logProvider.$get
将为您提供logservice的构造函数,您可以通过调用
$injector.instantiate($logProvider.$get)
自己创建它的实例,但问题是它依赖于尚未实例化的窗口服务,因此最终记录器实例化将失败

另一种方法是强制angular实例化logger,方法是在config块中添加一个decorator,您可以在需要任何配置日志记录之前将其设置为第一个配置块,然后您可以从
$logProvider
执行
ctor
,并获取logger的实例

.config(function($provide){
   //Just a dummy decorator
   $provide.decorator('$log', function($delegate){
      return $delegate;
  });

}).config(function($logProvider){
   //get logger instance
   var log = $logProvider.$get();
   log.debug("Got it");
});

$logProvider
不是
$log
服务。您希望如何使用日志提供程序?提供程序用于在配置阶段进行配置,它适合我的需要。只需要能够为我的配置块设置一些调试消息。@onblur不客气。我又增加了一种方法。我不确定是否有其他更好的方法来做到这一点(在第一个代码段中,为什么在.get(“$log”)之后省略了分号?)?