Как перенаправить информацию о регистраторе python в файл журнала на python

#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.