Skip to content

Suprimir el método trace #47

@misanram

Description

@misanram

Al usar systemd para manejar al bot el método trace pierde su utilidad y solo permite loggear eventos de nivel info. Propongo sustituirlo por " self.logger.info" o si fuera necesario en otros puntos del bot por " self.logger.debug", etc.
Por otro lado propongo cambiar el formato de los mensajes del log y usar el formato %-style en lugar del formato con f-strings
Es cierto que de todas las interpolaciones de variables, el formato con f-strings es el más rápido, pero usar %-style tiene una importante ventaja: la interpolación no se hace en el momento de llamar a la función, sino que los valores se pasan con parámetros a la función y la interpolación se hace en la profundidad del módulo logging. Esto produce que un error en los parámetros de llamada nunca generen error en el programa (y de hecho no se pueden capturar). Un error al loggear no va a levantar una excepción, a fin de cuentas logging debería ser algo secundario que registra cosas pero no algo que pueda parar el programa.
@euribates si no me crees prueba con este código:

import logging
import time

logging.basicConfig(handlers=[logging.NullHandler()])

class Bar:
    def __str__(self):
        raise Exception()

foo = Bar()

try:
    logging.warning('Algo: {}'.format(foo))
except Exception:
    print('Genera excepción 1')

time.sleep(1)
try:
    logging.warning(f'Algo: {foo}')
except Exception:
    print('Genera excepción 2')

time.sleep(1)
try:
    logging.warning('Algo: %s', foo)
except Exception:
    print('Genera excepción 3')
finally:
    print('¿Qué pasó?')

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions