Включение ведения журнала отладки в Python - PullRequest
0 голосов
/ 25 октября 2018

Учитывая этот код, я пытаюсь, чтобы операторы журнала работали, но я не могу.В документации сказано, что мне не нужно устанавливать уровень.

При создании регистратора устанавливается уровень NOTSET (что приводит к обработке всех сообщений, когда регистратор является корневым регистратором).или делегирование родительскому объекту, когда регистратор не является корневым регистратором).

Но без этого он не работал.Поэтому я попытался установить его для отладки.Но все равно не повезло.

"""
Experimental Port Fowarding
"""
import logging

def main(config):
    """ entry point"""

    log = logging.getLogger(__name__)
    log.setLevel(logging.DEBUG)

    log.debug("opening config file...")
    config_file = open(config, 'r')
    log.debug("config found!")

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

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

logging.basicConfig(filename="YourFileName.log")
log = logging.getLogger(__name__)
0 голосов
/ 25 октября 2018

У регистратора, который вы получаете, нет обработчиков.Вы можете проверить это, выполнив print(log.handlers) и увидев, что выводом является пустой список ([]).

Самый простой способ использовать библиотеку журналов - это что-то вроде этого, где вы вызываете logging.basicConfig для установкивсе, как показано в базовом учебном курсе по модулю :

"""
Experimental Port Fowarding
"""
import logging

logging.basicConfig(level=logging.DEBUG)

def main(config):
    """ entry point"""

    logging.debug("opening config file...")
    config_file = open(config, 'r')
    logging.debug("config found!")

main('test.conf')

Это работает для меня снаружи и внутри IPython.

Если вы хотите избежать basicConfig по какой-то причине вам необходимо зарегистрировать обработчик вручную, например:

import logging

def main(config):
    """ entry point"""

    log = logging.getLogger(__name__)
    log.setLevel(logging.DEBUG)
    # Minimal change: add StreamHandler to display to stdout
    log.addHandler(logging.StreamHandler())

    log.debug("opening config file...")
    config_file = open(config, 'r')
    log.debug("config found!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...