Ci sono un paio di risposte molto semplici qui. Il primo è semplicemente commentare la dichiarazione basicConfig(...)
. Ciò avrà l'effetto di non impostare nessuno dei logger, handler o formattatori, il che significa che le chiamate debug(), info(), ecc. Saranno effettivamente no-op.
Un'altra semplice risposta è impostare il livello di registrazione nella chiamata basicConfig()
a un valore superiore a DEBUG
. CRITICAL + 1
farebbe in modo di non vedere mai un messaggio di registro.
Tuttavia hai menzionato qualcosa sullo spostamento di questo codice in produzione, quindi quello che probabilmente vorrai fare è fornire le opzioni di riga di comando -q
e -v
(supponendo che questo sia uno strumento CLI). Il mio approccio abituale è quello di iniziare dal livello WARNING
, e per ogni -q
passare a una registrazione più silenziosa aumentando il livello del filtro. Al contrario, per ogni -v
, passare a una registrazione più dettagliata. Ecco uno snippet di codice che fa esattamente questo.
from argparse import ArgumentParser
from logging import basicConfig, CRITICAL, ERROR, WARNING, INFO, DEBUG
parser = ArgumentParser()
parser.add_argument("-v", "--verbose", action="count")
parser.add_argument("-q", "--quiet", action="count")
arguments = parser.parse_args()
raw_log_level = 2 + (arguments.verbose or 0) - (arguments.quiet or 0)
if raw_log_level <= 0:
log_level = CRITICAL
elif raw_log_level == 1:
log_level = ERROR
elif raw_log_level == 2: # default
log_level = WARNING
elif raw_log_level == 3:
log_level = INFO
else:
log_level = DEBUG
basicConfig(level=log_level)
Non si tratta di registrazione di base 101? – delnan
@delman: se la sua 101 poi si prega di scrivere una risposta migliore pratica – Merlin
Non sono qualificato per questo, sono solo piuttosto certo che il modo ovvio di farlo, l'impostazione del filtro per rifiutare tutti i messaggi, è descritto in qualsiasi registrazione decente tutorial. – delnan