#python #logging
#python #ведение журнала
Вопрос:
Я хочу записать все сообщения python logger в файл журнала. У меня есть этот код, но код отображает сообщения на консоли и просто создает файл журнала, но ничего в него не записывает.
file_handler = logging.FileHandler(filename='tmp.log')
stdout_handler = logging.StreamHandler(sys.stdout)
handlers = [file_handler, stdout_handler]
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',
handlers=handlers
)
logger = logging.getLogger("somename")
Что я здесь делаю не так
Комментарии:
1. Вы имеете в виду, что хотите записывать все
sys.stdout
в файл, а не в консоль?2. Я попробовал ваш пример кода, он регистрирует сообщения как на
sys.stdout
, так и наtmp.log
3. @Lakshita Ranasingha да, я хочу печатать только в журнале
4. @Sanya..in в моем случае это просто создает файл tmp.log
Ответ №1:
сделайте это вместо:
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',
filename='tmp.log'
)
logging.debug("somename")
Если filename
параметр указан в basicConfig
, это означает, что файл открыт в этом режиме. По умолчанию используется значение a
, что означает append.