Questo non importa molto. La registrazione è in gran parte ortogonale al design del tuo codice, quindi non sempre appartiene chiaramente a una particolare classe o modulo.
Tuttavia, molti framework di registrazione consentono di filtrare in base al nome del logger, dove questo nome del logger è in genere il nome completo di una classe o di un modulo. In tal caso, pensa se vuoi filtrare solo per quel modulo o anche per quella particolare classe. I logger per classe potrebbero anche essere più appropriati se vuoi che le classi ereditate utilizzino lo stesso registratore, ma lo troverei insolito.
In Python, in genere è più conveniente utilizzare variabili globali a livello di modulo anziché variabili di classe a causa delle regole di ambito. Per esempio. nei tuoi metodi dovresti accedere a un membro della classe come Rocket.LOGGER
, mentre LOGGER
farebbe riferimento a una variabile a livello di modulo. Inoltre, le variabili di livello di classe sono visibili come variabili di istanza. Per esempio. potremmo quindi accedere a some_rocket.LOGGER
. Naturalmente è possibile rendere il logger pseudo-privato dandogli un nome doppio-underscore, ma dove possibile l'approccio migliore è quello di evitare oggetti / classi.