Comment puis-je utiliser le module de journalisation en Python pour écrire dans un fichier? Chaque fois que j'essaie de l'utiliser, il imprime simplement le message.
128
Comment puis-je utiliser le module de journalisation en Python pour écrire dans un fichier? Chaque fois que j'essaie de l'utiliser, il imprime simplement le message.
Un exemple d'utilisation logging.basicConfig
plutôt quelogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
Dans l'ordre, les cinq parties font ce qui suit:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
si vous utilisez apacheif __name__ == '__main__':
- dessous n'est pas exécutée.Tiré du " livre de recettes de journalisation ":
Et vous êtes prêt à partir.
PS Assurez-vous de lire également le HOWTO de journalisation .
la source
logger.warning("message")
, je ne peux pas utiliserlogger.info("message")
nilogger.debug("message")
. C'est un peu ennuyeux.logger.setLevel(logging.DEBUG)
. Les enregistreurs peuvent être configurés avec plusieurs gestionnaires; le niveau configuré dans le journal détermine le niveau de gravité des messages du journal à envoyer à chacun de ses gestionnaires, et les niveaux définis dans les gestionnaires déterminent les niveaux que le gestionnaire traitera. Notez que ceux qui souhaitent imprimer des messages d'information n'ont besoin de le définir qu'à laINFO
fois dans le journal et dans le gestionnaire.logger.setLevel(logging.DEBUG)
- merci pour les commentairesJe préfère utiliser un fichier de configuration. Cela me permet de changer les niveaux de journalisation, les emplacements, etc. sans changer de code lorsque je passe du développement à la publication. J'emballe simplement un fichier de configuration différent avec le même nom et avec les mêmes enregistreurs définis.
Voici mon code pour le fichier de configuration du journal
la source
%%
en Python 3. par exempletime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
la source
logging
documentation officielle du module le permet. Vous pouvez même choisir quels journaux vont dans le terminal et lesquels vont dans un fichier, et bien d'autres applications intéressantes. docs.python.org/3/howto/…voici une façon plus simple de procéder. cette solution n'utilise pas de dictionnaire de configuration et utilise un gestionnaire de fichier de rotation, comme ceci:
ou comme ça:
la variable handlers doit être une variable itérable. logpath + filename et debug_level ne sont que des variables contenant les informations respectives. bien sûr, les valeurs des paramètres de fonction dépendent de vous.
la première fois que j'utilisais le module de journalisation, j'ai commis l'erreur d'écrire ce qui suit, ce qui génère une erreur de verrouillage de fichier du système d'exploitation (ce qui précède est la solution à cela):
et Bob est ton oncle!
la source
http://docs.python.org/library/logging.handlers.html#filehandler
la source
FileHandler
s différents pour diverses situations. (WatchedFileHandler
,RotatingFileHandler
, Etc.)la source
la source
Description du format
Appel normal
Production
Utilisation de Dict, Call values
otherMod2.py
Production
la source