Python logging et log level
Par Florian Strzelecki - 23:59 - 03.11.2014
Dans le précédent article, je parlais de l'héritage des loggers, technique très pratique pour mutualiser des comportements ou au contraire de les séparer. Vous avez pu voir comment faire en sorte que deux loggers n'utilisent pas le même niveau de log ou pas les mêmes handlers.
Un point que je n'ai pas abordé (parmi tant d'autres) est la gestion du niveau de log : il existe deux configurations de niveau, puis à l'usage il suffit de choisir la bonne méthode pour le bon niveau de log désiré. Certes, j'ai utilisé le niveau de log des loggers, mais je n'ai pas vraiment utilisé la notion de log level du handler.
Commençons donc par un exemple simple, cette fois-ci avec un seul logger ayant deux handlers :
from logging import getLogger
from logging.config import dictConfig
if __name__ == '__main__':
dictConfig({
'version': 1,
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
},
'file': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': 'log.txt'
}
},
'loggers': {
'main': {
'level': 'INFO',
'handlers': ['console', 'file'],
},
}
})
main = getLogger('main')
main.info('My message.')
main.error('My error message.')
Ce qui donne comme résultat :
$ python log.py
My message.
My error message.
Et dans le fichier log.txt
vous retrouverez exactement les même messages.