如何在AngularJS中打开/关闭$log.debug

6tqwzwtp  于 2023-05-21  发布在  Angular
关注(0)|答案(5)|浏览(196)

我尝试使用$log.debug(“Foo”)。它怎么能被打开关闭。我到处都找不到样本。我认为它需要在配置中设置,但我似乎也不能让它工作。
开关在哪里?

nzkunb0c

nzkunb0c1#

$logProvider.debugEnabled(true)
这仅在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
默认情况下,该选项处于启用状态。

ccrfmcuu

ccrfmcuu2#

您可以使用装饰器覆盖默认的$log行为,以提高日志级别。这是一个例子:

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/工作的启发

9w11ddsr

9w11ddsr3#

我也遇到过同样的问题,但这不是一个问题,要解决的编码,而不是只是使它从浏览器控制台
转到浏览器的控制台并将级别设置为详细

ruarlubt

ruarlubt4#

既然解决方案要求我们打开Verbose标志,我认为在angular中处理日志记录的最佳方法是在整个应用程序的生产环境中简单地更改原生console.log函数。

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

在生产环境中,这应该会禁用所有地方的日志记录。现在也不需要在每个控制器中注入$log。简单的console.log("logging message")工作!
您还可以根据需要以相同的方式禁用console.infoconsole.warnconsole.errorconsole.debug

fcwjkofz

fcwjkofz5#

基于迭戈的回应,但增加了一些环境配置,使其更短。您可以简单地使用以下命令运行您的应用:NODE_ENV=developmentNODE_ENV=production
例如:1. NODE_ENV=development webpack-dev-server
例如:2. 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;
});

相关问题