Estoy usando Python 3.9 y Django 3.2. Tengo el registro configurado en mi archivo settings.py
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, }Cuando inicio sesión en una de mis clases, lo hago así
import logging ... class TransactionService: def __init__(self): self._logger = logging.getLogger(__name__) def my_method(self, arg1, arg2): ... self._logger.info("Doing some logging here.")¿Cómo configuro mi registrador de modo que cuando se imprima el mensaje, tenga como prefijo la fecha y la hora actuales?
Esto funcionó para mí (adaptado de la respuesta de thorndeux):
import logging.config LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'prepend_date': { 'format': '{asctime} {levelname}: {message}', 'style': '{', }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'formatter': 'prepend_date', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, } logging.config.dictConfig(LOGGING) logging.info('foo') logging.warning('bar')huellas dactilares
2021-11-28 16:05:13,469 INFO: foo 2021-11-28 16:05:13,469 WARNING: barAgregue un formateador a su registrador. Por ejemplo:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'prepend_date': { 'format': '{asctime} {message}', 'style': '{', }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'formatter': 'prepend_date', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, }La respuesta a su pregunta se puede encontrar en la documentación oficial , lea el artículo completo.
import logging FORMAT = '%(asctime)s %(message)s' logging.basicConfig(format=FORMAT) logger = logging.getLogger() logger.setLevel(logging.INFO) logger.info("Doing some logging here.")Esto imprimiría:
2021-11-29 14:06:59,825 Doing some logging here.