Accesso allo stdout in Python

Muhammad Maisam Abbas 30 gennaio 2023
  1. Accedi a stdout con la funzione logging.basicConfig() in Python
  2. Accedi a stdout con la funzione logging.StreamHandler() in Python
Accesso allo stdout in Python

Questo tutorial introdurrà i metodi per scrivere i log in un file e stdout in Python.

Accedi a stdout con la funzione logging.basicConfig() in Python

Se vogliamo stampare i nostri log nella finestra della console e scrivere i log all’interno di un file, possiamo usare la funzione logging.basicConfig() per questo processo. La funzione logging.basicConfig() configura alcuni parametri di base per l’accesso in Python. Possiamo usare il parametro stream di questa funzione per specificare che vogliamo che questo log venga stampato anche sulla finestra della console. Il resto della configurazione rimane uguale alla scrittura di un log in un file con la funzione logging.basicConfig(). Il codice seguente mostra come scrivere i log nella finestra della 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")

Produzione:

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

Accedi a stdout con la funzione logging.StreamHandler() in Python

Possiamo anche usare la funzione logging.StreamHandler() per scrivere i log nella finestra della console in Python. Passando sys.stdout alla funzione logging.StreamHandler(), possiamo creare un gestore di flusso che può stampare il messaggio di registro nella finestra della console. Possiamo quindi aggiungere questo gestore di flusso al nostro oggetto logger con la funzione addHandler(). Il seguente frammento di codice ci mostra come possiamo stampare i messaggi di registro nella finestra della console con la funzione 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")

Produzione:

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

Abbiamo scritto il messaggio di registro This is the first error nel file logfile.log e nella finestra della console con le funzioni logging.FileHandler() e logging.StreamHandler() nel codice sopra. Per prima cosa abbiamo creato un oggetto logger che useremo per scrivere i log con la funzione logging.getLogger(). Quindi, abbiamo creato un gestore di file fileHandler e gli abbiamo assegnato logging.FileHandler('logfile.log').

Successivamente, abbiamo creato un gestore di flusso, streamHandler e assegnato logging.StreamHandler(sys.stdout). Successivamente, abbiamo creato un formattatore per formattare il nostro output con la funzione logging.Formatter() e impostare il formattatore sia per fileHandler che per streamHandler con la funzione setFormatter(). Seguendo il passaggio precedente, abbiamo aggiunto entrambi i nuovi gestori al nostro oggetto logger con la funzione addHandler(). Alla fine, abbiamo scritto il messaggio di errore nel nostro file e nella finestra della console con 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

Articolo correlato - Python Logging