Python — как отключиться от файла журнала

Дорогие,

У меня возникла проблема с Python: я создаю файл журнала, но как только я запускаю свою программу, связь между python и моим файлом журнала все еще существует: это означает, что я не могу удалить файл журнала, и следующие сообщения журнала будут отправлены в этот журнал файл, даже если я хочу отправить их в другое место.

Мой обходной путь — выключить ядро ​​и перезапустить его, но я хотел бы запрограммировать его, а не делать это вручную. Могли бы вы, пожалуйста, посоветовать?

Мой код:

import logging

#initialize the log settings
logging.basicConfig(filename='address.log',level=logging.INFO)

person lionrolll    schedule 21.06.2017    source источник


Ответы (3)


Вам нужно закрыть FileHandler после его использования. См. связанную статью python не выпускает дескрипторы файлов в файл журнала

person Ishan Thilina Somasiri    schedule 21.06.2017
comment
Привет, спасибо, я вижу, что это связано и что упомянутая проблема похожа на мою, но я слишком новичок, чтобы понять, как адаптировать решение, предоставленное для его конкретного кода, к моему... - person lionrolll; 21.06.2017

Просто используйте:

logging.shutdown()
person Kamlesh    schedule 20.07.2021

Мы можем сделать это следующим образом:

log = logging.getLogger()
for hdle in log.handlers[:]:
    if isinstance(hdle,logging.FileHandler): 
        hdle.close()
        log.removeHandler(hdle)

Я пробовал с logging.shutdown(), но это не всегда работает. Вы также можете посетить эту тему для получения дополнительных объяснений.

person Arun    schedule 25.07.2021