DEV Community

DrxwHe4rt
DrxwHe4rt

Posted on

Python Logging Handlers

No artigo anterior vimos como podemos gerar mensagens de erro, aviso e informativas do sistema. Agora, iremos aprofundar um pouco mais nesse assunto e iremos entender o que são os Handlers.

Os principais Handlers são:

  1. StreamHandler: Retorna a mensagem/log no terminal;
  2. FileHandler: Envia o log para um arquivo definido pelo desenvolvedor;
  3. NullHandler: não faz nenhuma formatação ou saída. É essencialmente um manipulador no-op (sem operação).

Na documentação oficial podemos contar um numero maior de Handlers, mas nesse artigo iremos usar apenas o StreamHandler e o FileHandler.

Vamos começar criando nosso arquivo .py, no meu caso irá se chamar app.py, mas pode atribuir o nome que desejar. Após isso, iremos começar a escrever o nosso codigo...

# Comece importando o módulo logging

import logging
Enter fullscreen mode Exit fullscreen mode

Agora, vamos definir nossa instancia do objeto getLogger() e o nivel de nosso log (nesse caso iremos definir o nivel de DEBUG).

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
Enter fullscreen mode Exit fullscreen mode

Vamos então definir as propriedades do nosso handler:

# Vamos começar testando o FileHandler
# O nome do nosso arquivo de log será LOG.log
fh = logging.FileHandler('LOG.log')

# Definindo o level do nosso handler
# Nesse caso, também será DEBUG
fh.setLevel(logging.DEBUG)
Enter fullscreen mode Exit fullscreen mode

Após definirmos as propriedades, de fato iremos criar o nosso handler:

logger.addHandler(fh)
Enter fullscreen mode Exit fullscreen mode

Por fim, vamos criar uma simples saida de texto para o nosso logger:

logger.debug('Olá, sou a mensagem de log dentro do seu arquivo.')
Enter fullscreen mode Exit fullscreen mode

Execute usando o script:

sh python app.py

Depois de executar o codigo, olhe na raiz da pasta que agora terá um arquivo com o nome LOG.lg contendo o seguinte conteúdo:
log

Agora, iremos testar o modo StreamHandler. Para isso iremos mudar apenas uma linha do codigo:

# de
fh = logging.FileHandler('LOG.log')

# para
fh = logging.StreamHandler()
Enter fullscreen mode Exit fullscreen mode

O restante do código pode manter da forma como estava. Se preferir, pode apagar o arquivo LOG.log para perceber que utilizando o StreamHandler o arquivo não será criado.

Rode no terminal:

sh python app.py

O seu retorno será no próprio terminal:
log2

O modo StreamHandler é usado, especialmente, para que os desenvolvedores tenham um retorno visual mais rapido, é comum o StreamHandler ser usado juntamente ao FileHandler.

Concluindo

Você tem varios manipuladores de logs disponives, hoje utilizamos os mais comuns, pois a usabilidade é, basicamente, a mesma, só muda a forma como você irá aplicar em seu ambiente.

Top comments (1)

Collapse
 
jonatasmarquesb profile image
Jonatas Marques

Conteúdo massa! me ajudou demais!