Skip to main content

Configuración desde diccionario

La configuración de un logger desde un diccionario en Python se realiza a través del método dictConfig() del módulo logging.config. Este enfoque es útil cuando deseas configurar múltiples loggers, handlers, formatters y filtros de manera flexible y dinámica a partir de una estructura de datos en forma de diccionario. Aquí tienes un ejemplo de cómo configurar un logger desde un diccionario:

import logging
import logging.config

# Definir la configuración del logger en un diccionario
configuracion_logger = {
'version': 1,
'formatters': {
'formato_simple': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
}
},
'handlers': {
'manejador_consola': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'formato_simple'
}
},
'loggers': {
'mi_logger': {
'level': 'DEBUG',
'handlers': ['manejador_consola']
}
}
}

# Configurar el logger desde el diccionario
logging.config.dictConfig(configuracion_logger)

# Usar el logger configurado
logger = logging.getLogger('mi_logger')
logger.debug('Este es un mensaje de depuración')
logger.info('Este es un mensaje informativo')
logger.warning('Este es un mensaje de advertencia')
logger.error('Este es un mensaje de error')
logger.critical('Este es un mensaje crítico')

Explicación:

  1. Definir la Configuración del Logger en un Diccionario: Se define un diccionario llamado configuracion_logger que contiene la configuración del logger, incluyendo los formatters, handlers y loggers. La configuración se organiza en una estructura jerárquica que especifica cómo se deben formatear y manejar los mensajes de registro.

  2. Configurar el Logger desde el Diccionario: Se utiliza el método dictConfig() del módulo logging.config para configurar el logger utilizando el diccionario de configuración definido anteriormente.

  3. Usar el Logger Configurado: Una vez configurado, se puede usar el logger como de costumbre. En este ejemplo, se obtiene el logger con el nombre 'mi_logger' y se registran varios mensajes de diferentes niveles de gravedad.

Este enfoque de configuración desde un diccionario es útil cuando necesitas definir y modificar la configuración del logger de manera dinámica, especialmente en situaciones donde la configuración puede variar según el entorno de ejecución o las necesidades específicas de la aplicación.

Desde JSON

Para configurar un logger desde un archivo JSON en Python y asegurarse de que el handler sea un archivo, puedes seguir un enfoque similar al anterior, pero en lugar de usar un diccionario directamente, cargarás la configuración desde un archivo JSON. Aquí tienes un ejemplo de cómo hacerlo:

  1. Primero, crea un archivo JSON con la configuración deseada. Por ejemplo, llamémoslo configuracion_logger.json:
{
"version": 1,
"formatters": {
"formato_simple": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
},
"handlers": {
"manejador_archivo": {
"class": "logging.FileHandler",
"filename": "mi_archivo.log",
"level": "DEBUG",
"formatter": "formato_simple"
}
},
"loggers": {
"mi_logger": {
"level": "DEBUG",
"handlers": ["manejador_archivo"]
}
}
}
  1. Luego, carga la configuración desde el archivo JSON y configura el logger:
import json
import logging
import logging.config

# Cargar la configuración desde el archivo JSON
with open('configuracion_logger.json', 'r') as archivo:
configuracion_logger = json.load(archivo)

# Configurar el logger desde el JSON
logging.config.dictConfig(configuracion_logger)

# Usar el logger configurado
logger = logging.getLogger('mi_logger')
logger.debug('Este es un mensaje de depuración')
logger.info('Este es un mensaje informativo')
logger.warning('Este es un mensaje de advertencia')
logger.error('Este es un mensaje de error')
logger.critical('Este es un mensaje crítico')

En este ejemplo, hemos definido la configuración del logger en el archivo JSON configuracion_logger.json. El handler se ha configurado como un FileHandler, que escribirá los mensajes de registro en el archivo mi_archivo.log. Luego, cargamos esta configuración desde el archivo JSON y la aplicamos utilizando dictConfig() de la misma manera que en el ejemplo anterior.

Este enfoque te permite definir y modificar fácilmente la configuración del logger mediante un archivo JSON, lo que puede ser útil en situaciones donde necesitas una configuración más compleja o dinámica.