Mejores prácticas para escribir una excepción de Python en un archivo de registro [cerrado]

Resuelto jeannej asked hace 7 meses • 1 respuestas

Definí una log_text()función para imprimir mensajes personalizados y escribirlos en un archivo de registro. La arquitectura de mi proyecto es bastante simple, con el script principal llamando a funciones desde otro archivo:

main.py
|
|--- functions.py -- log_text()

Me gustaría detectar cualquier excepción de Python e imprimirla en el archivo de registro para ayudar a futuros usuarios. Por ahora incrusté casi todas las operaciones de main en un bloque try/except como este:

import #...
class parameters():
  log_file_path = #path to the log file

prm = parameters()

try:
  #main code

except Exception as e:
  log_text(log_file_path, e)
  print(e)

Estoy acostumbrado a hacer esto con pequeñas porciones de un código, pero no con todo el script. ¿Es la práctica común? ¿Existe una mejor manera de escribir alguna excepción en un archivo de registro?

jeannej avatar Feb 16 '24 21:02 jeannej
Aceptado

Lo que tienes está bien, en su mayor parte. Para simplificar las cosas, definiría una única función que se puede llamar en su trydeclaración. (Esta función puede permitir realizar pruebas, ya que puede importar su secuencia de comandos y llamar a la función en circunstancias controladas). Si en realidad no está "manejando" la excepción, también debe volver a generar la excepción o finalizar explícitamente la secuencia de comandos. con un estado de salida distinto de cero para que la persona que llama aún sepa que hubo un error.

def main():
   ...


if __name__ == '__main__':
    try:
        main()
    except Exception as e:
        log_test(log_file_path, e)
        print(e)
        sys.exit(1)

Para volver a generar la excepción, reemplace ambos print(e)y sys.exit(1)con una sola raisedeclaración.

chepner avatar Feb 16 '2024 15:02 chepner