Ведение журнала 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)