логирование
Python уже имеет отличный встроенный модуль регистрации . Вы можете использовать шаблон регистрации здесь .
Модуль регистрации позволяет вам указать уровень важности; во время отладки вы можете регистрировать все, в то время как при нормальной работе вы можете регистрировать только критические вещи. Вы можете выключать и включать вещи.
Большинство людей просто используют базовые операторы печати для отладки, а затем удаляют операторы печати. Лучше оставить их, но отключить их; затем, когда у вас есть другая ошибка, вы можете просто снова включить все и просмотреть ваши журналы.
Это может быть наилучшим способом отладки программ, которые должны быстро выполнять какие-либо действия, например сетевых программ, которые должны реагировать до истечения времени ожидания и прекращения работы другого конца сетевого подключения. У вас может не быть много времени для пошагового отладчика; но вы можете просто позволить своему коду работать и регистрировать все, затем изучать журналы и выяснять, что на самом деле происходит.
РЕДАКТИРОВАТЬ: оригинальный URL для шаблонов был: http://aymanh.com/python-debugging-techniques
Эта страница отсутствует, поэтому я заменил ее ссылкой на снимок, сохраненный на archive.org: http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-techniques
В случае, если он снова исчезнет, вот шаблоны, которые я упомянул. Это код взят из блога; Я не писал это.
import logging
import optparse
LOGGING_LEVELS = {'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG}
def main():
parser = optparse.OptionParser()
parser.add_option('-l', '--logging-level', help='Logging level')
parser.add_option('-f', '--logging-file', help='Logging file name')
(options, args) = parser.parse_args()
logging_level = LOGGING_LEVELS.get(options.logging_level, logging.NOTSET)
logging.basicConfig(level=logging_level, filename=options.logging_file,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# Your program goes here.
# You can access command-line arguments using the args variable.
if __name__ == '__main__':
main()
И вот его объяснение того, как использовать выше. Опять же, я не получаю кредит на это:
По умолчанию модуль журналирования печатает критические сообщения, сообщения об ошибках и предупреждения. Чтобы изменить это так, чтобы печатались все уровни, используйте:
$ ./your-program.py --logging=debug
Чтобы отправить сообщения журнала в файл с именем debug.log, используйте:
$ ./your-program.py --logging-level=debug --logging-file=debug.log