2015-07-29 3 views
2

Я использую модуль регистрации в приложении, и мне пришло в голову, что он был бы аккуратным, если бы модуль протоколирования поддерживал метод, который бы изящно закрывал дескрипторы файлов и т. Д., А затем закрывал приложение.python logging close and application exit

Например:

logger = logging.getLogger('my_app') 
logger.fatal("We're toast!") 

фатальный метод (или некоторые такие) затем:

  1. войти сообщение как нормальный
  2. logging.shutdown()
  3. Вызов SYS. выход (1)

Мысли? Что-то вроде этого существует? Это плохая идея?

Почему я хочу этого? Хорошо, что в моем коде есть несколько мест, где я хочу, чтобы приложение умерло, и кажется, что отходы продолжают повторяться, чтобы код и .

+0

Если это всего лишь две три строки, просто напишите небольшую функцию для этого? – Stiffo

+0

@ Stiffo Yup Я бы сказал, что, вероятно, мне все равно придется это сделать. Мне просто интересно, есть ли что-то, чего я не видел ... кажется, это довольно интуитивный метод. –

ответ

0

Возможно, не самое чистое решение, но это приходит на ум:

try: 
    # Your main function 
    main() 
except: 
    logger.exception('some message') 
    sys.exit(1) 

И в самом коде просто поднять любое исключение

Хотя это даст вам другого регистратора. Если речь идет только о части завершения работы, просто используйте try/finally:

try: 
    # do whatever here 
    main() 
finally: 
    logging.shutdown()