Ведение журнала basicConfig, не создавая файл журнала, когда я запускаю в pycharm?

Когда я запускаю код ниже в терминале, создайте файл журнала

import logging 
logging.basicConfig(filename='ramexample.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

но когда я запускаю samecode (с другим filename = 'ram.log') в pycharm, он не создает никакого файла журнала. почему?

import logging 
logging.basicConfig(filename='ram.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

Что мне нужно сделать, чтобы создать файл журнала с pycharm?

Ответ 1

Я столкнулся с той же проблемой и не нашел ни одного из приведенных здесь ответов. Возможно, этот вопрос давно был решен Рамнатх Редди, но я не мог найти правильный ответ в любом месте в Интернете.

К счастью, я нашел решение из кода коллеги, добавив следующие строки до logging.basicConfig().

Удалите все обработчики, связанные с объектом корневого регистратора.

for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

Попробуйте посмотреть, помогает ли она тем, у кого была такая же проблема.

Ответ 2

Максимас прав. Путь к файлу относится к среде выполнения. Однако вместо того, чтобы записывать абсолютный путь, вы можете попробовать подход к разрешению динамического пути:

filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'ram.log')
logging.basicConfig(filename=filename, level=logging.DEBUG)

Предполагается, что ram.log находится в том же каталоге с тем, который содержит указанный выше код (для чего используется __file__).

Ответ 3

Это создает журнал в терминале pycharm с использованием терминала Py внутри него. Вам нужно проверить, где находится терминал (попробуйте dir на Windows или pwd на linux/mac). Вместо того, чтобы просто вставлять ram.log, используйте полный путь к файлу, где вы хотите, чтобы файл отображался. НАПРИМЕР.

logging.basicConfig(filename='/Users/Donkey/Test/ram.log', level=logging.DEBUG)

Ответ 4

Я не могу вспомнить, где я получил это, иначе я бы предоставил ссылку. Но некоторое время назад у меня была та же проблема с использованием в ноутбуках Jupyter, и это исправило ее:

import logging
logger = logging.getLogger()
fhandler = logging.FileHandler(filename='mylog.log', mode='a')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fhandler.setFormatter(formatter)
logger.addHandler(fhandler)
logger.setLevel(logging.DEBUG)