Login em aplicativos Angular … e como filtrar essas mensagens de log

A maneira clássica de fazer login em JavaScript é por meio da console.logchamada deliciosa ; é bastante força bruta – ele registra. É isso aí. Sem mensagens de log de filtragem, sem níveis de log (ou seja, aviso, erro, etc.).

O que é bom é que o Angular nos fornece um serviço útil que envolve console.loge é chamado, curiosamente $log,.

$log é um serviço simples que, quando incluído em seu código, fornece quatro métodos:

  1. error: para, bem, erros – também oferece um rastreamento de pilha
  2. info: para mensagens informativas
  3. log: uh, mensagens de log?
  4. warn: mensagens de aviso, duh

2 deles são bastante óbvios quanto à sua função: warn& error. Como você usa infoe logrealmente depende de você; para ser, eles são muito semelhantes. Eu normalmente uso logpara significar depuração. As informações seriam para mensagens informativas generalizadas (como um serviço dizendo “Ei, estou usando o servidor de teste”)

Obter o Angular $logé muito simples, basta declará-lo como uma dependência em sua ‘coisa’ particular, portanto, para um controlador:

function SomeCtrl($scope, $log) {
$log
.info('SomeCtrl - starting up, yeah!');
}

Filtrando essas $logmensagens

Dito tudo isso, obter muitos registros no console pode ser um pouco como receber uma tonelada de spam. Além disso, talvez você não queira registrar tudo. Talvez você queira enviar erros para um servidor remoto.

Assim, o Angular nos fornece o conceito de ‘decoradores’ e estes nos permitem embrulhar o $logserviço original e fornecer nossas próprias implementações (ou embrulhar as originais).

O exemplo a seguir (emprestado deste tópico do Grupo do Google ) é silencioso quando se trata de logmensagens (porque, para mim, são mensagens de depuração) e decide solicitar qualquer mensagem.alert()error

myApp.config(function($provide) {
$provide
.decorator('$log', function($delegate, $sniffer) {
var _log = $delegate.log; //Saving the original behavior

$delegate
.log = function(message) { };
$delegate
.error = function(message) {
alert
(msg);
}

return $delegate;
});
})

Um pouco mais de informações $logpodem ser encontradas na página de documentação Angular aqui .