DEV Community

DrxwHe4rt
DrxwHe4rt

Posted on

3

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!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay