- Это руководство короткое
- Для поиска ошибок в коде Вы можете использовать print для просмотра значений переменных
- НЕ делайте этого. Используйте модуль logging
Модуль logging предпочтительнее, так как:- Легко можно поместить указатель времени в каждое сообщение
- Вы можете использовать разные уровни срочности ваших сообщений и фильтровать их по этому уровню
- Когда Вы захотите позже найти / изменить лог-сообщения Вы не перепутаете их с другим выводом команды print
- Если Вы хотите вывести лог в файл, то очень легко будет игнорировать вывод лог-сообщений
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('This is a log message.')
import logging
logging.basicConfig(filename='log_filename.txt',level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('This is a log message.')
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
fh = logging.FileHandler('log_filename.txt')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)logger.debug('This is a test log message.')
- CRITICAL
- ERROR
- WARNING
- INFO
- DEBUG
Вызов setLevel() устанавливает минимальный уровень логирования, нужный Вам. Например, если Вы используете fh.setLevel(logging.ERROR), тогда будут сообщения с уровнем WARNING, INFO и DEBUG не будут записываться в файл (так как fh - обработчик лог-файла в нашем примере, в отличие от ch, который обрабатывает логи для отображения на экране).Для записи сообщен
ий разного уровня используйте:logger.critical('This is a critical message.')logger.error('This is an error message.')logger.warning('This is a warning message.')logger.info('This is an informative message.')logger.debug('This is a low-level debug message.')
Автор: Ishayahu Lastov