Mejores prácticas para escribir una excepción de Python en un archivo de registro [cerrado]
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?
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 try
declaració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 raise
declaración.