Accesso allo stdout in Python
-
Accedi a
stdout
con la funzionelogging.basicConfig()
in Python -
Accedi a
stdout
con la funzionelogging.StreamHandler()
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')
.
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