Skip to content

Suprimir el método trace #47

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

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions