Ответ 1
Попробуйте позвонить
logger.error('This should go to both console and file')
вместо
logging.error('this will go to the default logger which you have not changed the config of')
Я пытаюсь написать сервер, который регистрирует исключения как на консоли, так и в файле. Я вытащил код из кулинарной книги. Вот он:
logger = logging.getLogger('server_logger')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('server.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(ch)
logger.addHandler(fh)
Этот код отлично разбирается в консоли, но ничего не записывается в файл. Файл создается, но в нем ничего не написано. Я попытался закрыть обработчик, но это ничего не делает. Не смывает его. Я искал в Интернете, но, видимо, я единственный, кто столкнулся с этой проблемой. Кто-нибудь знает, в чем проблема? Спасибо за ваши ответы.
Попробуйте позвонить
logger.error('This should go to both console and file')
вместо
logging.error('this will go to the default logger which you have not changed the config of')
Я знаю, что этот вопрос может быть слишком старым, но я нашел вышеупомянутый метод немного излишним. Я столкнулся с подобной проблемой, я смог ее решить:
import logging
logging.basicConfig(format = '%(asctime)s %(message)s',
datefmt = '%m/%d/%Y %I:%M:%S %p',
filename = 'example.log',
level=logging.DEBUG)
Это будет записывать в example.log
все журналы, которые отлаживаются или выше.
logging.debug("This is a debug message")
будет писать This is a debug message
до example.log
. Для этого важно, чтобы этот уровень работал.
Попробуйте поставить import и basicConfig в самое начало script. Что-то вроде этого:
import logging
logging.basicConfig(filename='log.log', level=logging.INFO)
.
.
import ...
import ...