Ведення журналів
У Python вже є відмінний вбудований модуль реєстрації даних . Тут ви можете скористатися шаблоном журналу .
Модуль реєстрації дозволяє визначити рівень важливості; під час налагодження ви можете реєструвати все, тоді як під час звичайної роботи ви можете реєструвати лише критичні речі. Ви можете вимикати та вмикати речі.
Більшість людей просто використовують основні заяви друку для налагодження, а потім видаляють оператори друку. Краще залишити їх, але відключити; тоді, коли у вас є інша помилка, ви можете просто знову включити все і переглянути свої журнали.
Це може бути найкращим можливим способом налагодження програм, яким потрібно швидко робити такі дії, як, наприклад, мережеві програми, на які потрібно реагувати перед тим, як закінчується та вимикається інший кінець мережевого з'єднання. Можливо, у вас не буде багато часу для одномоментного налагодження; але ви можете просто дозволити своєму коду запускатись і записувати все в журнал, а потім переглядати журнали та з’ясовувати, що насправді відбувається.
EDIT: Початкова 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