如何打开在AngularJS /关闭$ log.debug(How to turn on/off $

2019-07-22 12:46发布

我试图使用$ log.debug(“富”)。 它如何可以打开关闭。 我找不到任何地方的样本。 我认为它需要在config来设定,但我似乎无法得到这工作的。

究竟应该怎样设置开启和关闭?

Answer 1:

$ logProvider.debugEnabled(真)

这只是AngularJs 1.1.2或更高版本可用。

https://github.com/angular/angular.js/pull/1625

下面是它被设置的一个例子。

var app = angular.module('plunker', []);

app.config(function($logProvider){
  $logProvider.debugEnabled(true);
});

app.controller('MainCtrl', function($scope, $log ) {
  $scope.name = 'World';
  $scope.model = {value: "test"};
  $log.debug('TEST Log');
});

http://plnkr.co/edit/HZCAoS?p=preview

默认情况下,它是。



Answer 2:

您可以覆盖默认$日志行为与装饰,以enhace日志级别。 这是一个例子:

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;
    });
});

这是从约翰·克罗斯比的工作在启发http://www.thekuroko.com/using-angulars-log-provider/



Answer 3:

我曾经面临同样的问题,但它不是通过编码,而不是从浏览器控制台只是使它可以解决的问题

往浏览器的控制台,并设置级别为verbose



Answer 4:

基于迭戈的回应,但增加了一些配置包膜,使之短。 您可以通过简单地运行你的应用程序: NODE_ENV=developmentNODE_ENV=production

[点拨。 NODE_ENV=development webpack-dev-server

EG2。 NODE_ENV=production node app.js

$logProvider.debugEnabled(process.env.NODE_ENV === 'development');
$provide.decorator('$log', function($delegate) {
    $delegate.info = $logProvider.debugEnabled() ? $delegate.info : function() {};
    $delegate.log = $logProvider.debugEnabled() ? $delegate.log : function() {};
    return $delegate;
});


Answer 5:

那么,由于该解决方案需要我们开启Verbose的标志,我觉得来处理的角度记录的最好方法是简单地改变了天然console.log在生产环境功能为整个应用程序。

angular.module("myModule")
.config(function(){
    //if production environment
    console.log = ()=>{};
})

而已。 在生产环境中,这应该处处禁用日志记录。 也没有必要注入$log现在在每一个控制器。 简单console.log("logging message")的作品!

您还可以禁用console.infoconsole.warnconsole.errorconsole.debug的方式根据自己的需要一样。



文章来源: How to turn on/off $log.debug in AngularJS