J'ai trois classes en python et elles s'exécutent dans des threads différents. Je voudrais avoir sortie dans le même fichier de toutes les classes. À l'heure actuelle, j'ai créé une méthode de sortie dans la classe principale et je l'ai transmise à d'autres classes via des constructeurs. Y at-il moyen de mieux le gérer? Comment puis-je passer l'enregistreur entre les classes, sauf en utilisant des contructeurs?Connexion entre classes en python
Peut-être python supporte quelque chose comme la méthode statique en Java, donc je peux écrire comme Logger.info (message) dans les trois classes?
Une autre façon pourrait probablement réaffecterons sys.stdout mondiale au fichier, i.e. spécifiant
logger = open('debug.txt', 'w')
sys.stdout = logger
Ensuite, en utilisant des appels sys.stdout dans toutes les classes.
Qu'en pensez-vous?
@lazyr. Merci pour la réponse. Comment je peux passer l'objet de journal entre les classes de sorte que tous les trois fichiers et il écrira dans le même fichier journal? – yart
J'ai le code ci-dessus dans un fichier séparé, disons log.py, puis je vais "à partir de log journal d'importation" dans chacun de mes autres modules. Python ne charge qu'un module une seule fois - toutes les instructions d'importation après la première ne font que récupérer ce qui a déjà été chargé - donc ce sera le même objet de journal dans tous vos threads. –
@lazyr: Dans le cas du module 'logging', vous n'avez pas besoin de faire cela - le module' logging' conserve lui-même les loggers qu'il crée dans son propre module. Vous pouvez simplement lancer 'logging.getLogger' dans un autre module et vous obtiendrez le même objet. – nosklo