Методы модуля протоколирования ожидают, что первый аргумент будет строкой формата, а следующие аргументы принадлежат этой строке формата: logger.debug(fmt_str, arg1,....)
. Но ваша строка не имеет никаких признаков того, что после нее появится больше элементов.
т.е. в конце концов, logger.debug func попытается сделать что-то вроде этого:
fmt_str % (arg1, arg2, ...)
Попробуйте просто добавить формат str %s
:
logger.debug('Is between now and then: %s', solar_noon < now < solarnoonplustimeunit )
Редактировать: Почему ваша исходная строка работает с print
:
Согласно документам :
print (* objects, sep = '', end = '\ n', file = sys.stdout)
Печатать объекты в файл потока, разделенные sep и последующие end. sep, end и file, если они есть, должны быть заданы в качестве аргументов ключевого слова.
Все аргументы, не являющиеся ключевыми словами, преобразуются в строки, как это делает str () и
записывается в поток, отделяется sep и сопровождается end. Оба сент
и конец должен быть строками; они также могут быть None, что означает использование
значения по умолчанию. Если объекты не указаны, print () просто напишет end.
Поскольку по умолчанию sep
является пробелом, python просто смешивает строковое представление вашей строки и значения bool вместе, разделяя их пробелами.