Registrador global de Python

Este artículo presenta el registro, sus diversos niveles y su importancia en Python. Luego, aprenderemos cómo usar el módulo de registro de Python globalmente.


Una introducción al registro y su importancia en Python

El registro es un método de seguimiento de eventos que ocurren mientras se ejecuta el software. Los desarrolladores de software agregan llamadas de registro para registrar errores y eventos que ocurren cuando alguien ejecuta un programa.

En la programación de Python, tenemos un módulo integrado llamado registro que registra dichos errores y eventos. Tenga en cuenta que los eventos son mensajes y, opcionalmente, guardan datos específicos de eventos.

Estos eventos pueden tener diferentes niveles/severidades, especificados por el desarrollador del software. Entonces, podemos decir que el registro es una herramienta muy poderosa para depurar nuestra aplicación y rastrear cualquier información necesaria.

El módulo de registro proporciona diferentes formas para que nuestra aplicación configure varios controladores de registro, enrute los mensajes de registro a estos controladores y permita una configuración altamente flexible, lo que ayuda a manejar varios casos de uso.

El módulo de registro también tiene diferentes niveles de registro para ayudarnos a lidiar con varios niveles de gravedad. Aquí hay una breve descripción de los niveles de registro:

  • INFO : confirma que varias cosas funcionan como se esperaba.
  • DEBUG : proporciona detalles típicos cuando alguien está diagnosticando un problema.
  • ADVERTENCIA − Indica que algo sucedió de forma inesperada. También podemos decir que ADVERTENCIA indica un problema que puede ocurrir pronto, como espacio en disco insuficiente.
  • CRÍTICO - Indica un error crítico donde la propia aplicación no puede continuar.
  • ERROR - Representa un problema más grave que no permite que el programa realice una operación o función.

Usando el módulo de registro globalmente en Python

Podemos usar el módulo de registro local y globalmente en Python. Aquí, localmente significa usar el módulo de registro en un ámbito específico; por ejemplo, hemos introducido el módulo de registro en el archivo A.py, por lo que solo podemos usarlo en A.py, no en el archivo B.py.

Por otro lado, global significa que se usa en todas partes en el archivo A.py y el archivo B.py. Comprender el uso del módulo de registro nativo es importante para aprender sobre el registrador global de Python.

Código de ejemplo para usar el módulo de registro localmente (guardado en el archivo test.py):

import logging

logger = logging.getLogger("test_logger")
logger.setLevel(logging.INFO)

def sum_numbers(number1, number2):
    try:
        output = number1 + number2
    except TypeError:
        logger.exception("Oh! TypeError Occurred")
    else:
        return output

result = sum_numbers(10, 'Mehvish')

Aquí usamos el módulo de registro localmente en el archivo test.py importado.

Luego, usamos getLogger()el módulo de registro en Python para iniciar el registro. Ejecute la función de fábrica para esto logging.getLogger(name).

getLogger()Toma un argumento, el nombre del registrador, y devuelve una referencia a la instancia del registrador (objeto del registrador), usando el nombre si se especifica, o la raíz de lo contrario.

Tenga en cuenta que varias llamadas a con el nombre exacto getLogger()devuelven una referencia a la misma instancia de registrador, lo que es útil para usarlo globalmente (como veremos más adelante).

A continuación, usamos setLevel()el método para establecer el nivel de registro y escribimos la función sum_numbers(), que toma dos números de tipo int, los suma y devuelve el resultado si el valor dado es correcto; de lo contrario, genera un TypeError.

Finalmente, llamamos para sum_numbers()ver nuestro módulo de registro en acción produciendo los siguientes resultados.

producción:

Oh! TypeError Occurred
Traceback (most recent call last):
  File "E:\Code\use_logging_locally\test.py", line 8, in sum
    output = number1 + number2
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Usar el módulo de registro es fácil, pero ¿cómo aprovechar este módulo globalmente? Aprendamos a continuación.

Código de muestra (guardado en el archivo log.py):

import logging

def set_custom_logger(name):
    formatter = logging.Formatter(
                    fmt='%(asctime)s - %(levelname)s - %(module)s - %(message)s'
                )

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    logger.addHandler(handler)
    return logger

Código de muestra (guardado en el archivo submodule.py):

import logging

logger = logging.getLogger('root')
logger.debug('submodule message')

Código de muestra (guardado en el archivo main.py):

import log
logger = log.setup_custom_logger('root')
logger.debug('main message')

import submodule

producción:

2022-10-27 09:31:02,447 - DEBUG - main - main message
2022-10-27 09:31:02,450 - DEBUG - submodule - submodule message

Este ejemplo de código imprime la fecha, la hora, el nivel de registro, el nombre del módulo y el mensaje.

请注意, usamos en submodule.py logging.getLogger()para usar la instancia de registrador exacta que usamos en el archivo log.py.

¿cómo? logging.getLogger(name)Por lo general, se ejecuta para comenzar a iniciar sesión con el módulo de registro en Python. getLogger() toma un argumento, el nombre del registrador.

Al usar getLogger()la función, podemos obtener una referencia a una instancia de registrador con un nombre determinado (si se proporciona) o un directorio raíz (si no se especifica).

Llamar varias veces con el nombre exacto getLogger()devuelve una referencia al objeto registrador exacto, lo que nos ayuda a usarlo globalmente.

Supongo que te gusta

Origin blog.csdn.net/fengqianlang/article/details/131584747
Recomendado
Clasificación