2016-09-28 25 views
0

我有一個角度應用程序,它使用$ log.debug在控制檯中記錄調試消息。該應用程序的規模越來越大,所以我想查看是否有辦法在生產環境中全局禁用這些日誌文件。我看到了幾個帖子,您可以在其中配置$ logProvider以禁用將調試日誌記錄到控制檯($ logProvider.debugEnabled(false);),但這不適用於我。這是我的控制器,我加入這一個:

(function() { 
    'use strict'; 

    angular 
     .module('bodyShop') 

     // This config was added to globally disable logs 
     .config(function($logProvider){ 
      $logProvider.debugEnabled(false); 
     }) 

     .controller('CustomerController', function ($log, $window) { 

     var vm = this; 
     ... 
     ... 
     ... 
     ... 
     ... 

這不拋出任何錯誤和頁面按預期工作,但我仍然可以看到在控制檯上所有的調試日誌。

此外,我知道這將只在該控制器中「全局」禁用日誌。但我也嘗試在我的模塊中添加$ logProvider配置,這樣我就可以在整個應用程序中禁用日誌,但沒有成功。

任何建議都會有所幫助。

+0

實際上應該禁用整個應用程序。無論有多少個模塊,只有一個'$ logProvider'。你確定在其他配置中沒有啓用它嗎? – charlietfl

+0

我已經使用Yeoman生成AngularJS-Gulp應用程序。任何想法,這可以配置? –

+0

做文件搜索 – charlietfl

回答

0

有隻有一個$logProvider在應用中無論有多少模塊,因此設置debugEnabled一次將整個被注射

唯一的解釋是,它被設置在其他地方在運行後顯示

的相互配置的所有模塊的全球
+0

謝謝!由於我的應用程序是使用Yeoman angular-gulp生成器構建的,因此我在index.config.js中找到了$ logProvider的配置。我通過將值更改爲false來驗證它的工作原理。記錄所有$ log.debug被禁用。 –

0

您可以使用裝飾器來覆蓋默認的日誌記錄行爲。有一個在http://www.thekuroko.com/using-angulars-log-provider/

下面的文章由約翰·克羅斯比是一些代碼,將做到從答案How to turn on/off $log.debug in AngularJS這份工作,我還沒有運行它,但我認爲這是你在找什麼

angular.module('app').config(function($logProvider, $provide){ 

    $logProvider.debugEnabled(false); 

    $provide.decorator('$log', function ($delegate) { 
     //Original methods 
     var origInfo = $delegate.info; 
     var origLog = $delegate.log; 

     //Override the default behavior 
     $delegate.info = function() { 

      if ($logProvider.debugEnabled()) 
       origInfo.apply(null, arguments) 
     }; 

     //Override the default behavior  
     $delegate.log = function() { 

      if ($logProvider.debugEnabled()) 
       origLog.apply(null, arguments) 
     }; 

     return $delegate; 
    }); 
}); 
+0

我將不得不考慮裝飾。上面提到的代碼不適合我。但是如果「$ logProvider.debugEnabled(false);」不工作,那麼看來我將不得不走這條路線 –