Log para stdout em Python

Muhammad Maisam Abbas 30 janeiro 2023
  1. Faça login em stdout com a função logging.basicConfig() em Python
  2. Faça login em stdout com a função logging.StreamHandler() em Python
Log para stdout em Python

Este tutorial apresentará os métodos para gravar logs em um arquivo e stdout em Python.

Faça login em stdout com a função logging.basicConfig() em Python

Se quisermos imprimir nossos logs na janela do console e escrever os logs dentro de um arquivo, podemos usar a função logging.basicConfig() para este processo. A função logging.basicConfig() configura alguns parâmetros básicos para registro em Python. Podemos usar o parâmetro stream desta função para especificar que também queremos que este log seja impresso na janela do console. O resto da configuração permanece o mesmo que escrever um log em um arquivo com a função logging.basicConfig(). O código a seguir demonstra como podemos gravar logs na janela do console.

import logging
import sys

# Creating and Configuring Logger

Log_Format = "%(levelname)s %(asctime)s - %(message)s"

logging.basicConfig(
    filename="logfile.log",
    stream=sys.stdout,
    filemode="w",
    format=Log_Format,
    level=logging.ERROR,
)

logger = logging.getLogger()

# Testing our Logger

logger.error("Our First Error Message")

Resultado:

2021-06-13 05:15:24,093 - root - ERROR - Our First Error Message

Faça login em stdout com a função logging.StreamHandler() em Python

Também podemos usar a função logging.StreamHandler() para escrever logs na janela do console em Python. Ao passar sys.stdout para a função logging.StreamHandler(), podemos criar um manipulador de fluxo que pode imprimir a mensagem de log na janela do console. Podemos então adicionar esse manipulador de fluxo ao nosso objeto logger com a função addHandler(). O trecho de código a seguir nos mostra como podemos imprimir mensagens de log na janela do console com a função logging.StreamHandler().

import logging
import sys

logger = logging.getLogger()
fileHandler = logging.FileHandler("logfile.log")
streamHandler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
streamHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
logger.addHandler(fileHandler)
logger.error("This is the first error")

Resultado:

2021-06-13 05:03:37,510 - root - ERROR - This is the first error

Escrevemos a mensagem de log This is the first error no arquivo logfile.log e na janela do console com as funções logging.FileHandler() e logging.StreamHandler() no código acima. Primeiro criamos um objeto logger que usaremos para escrever logs com a função logging.getLogger(). Em seguida, criamos um manipulador de arquivo fileHandler e atribuímos logging.FileHandler('logfile.log') a ele.

Depois disso, criamos um manipulador de fluxo, streamHandler, e atribuímos logging.StreamHandler(sys.stdout). Depois disso, criamos um formatador para formatar nossa saída com a função logging.Formatter() e definir o formatador para fileHandler e streamHandler com a função setFormatter(). Seguindo a etapa anterior, adicionamos os dois novos manipuladores ao nosso objeto logger com a função addHandler(). No final, escrevemos a mensagem de erro em nosso arquivo e na janela do console com logger.error('This is the first error').

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Python Logging