python logging.config не доступен? - PullRequest
       9

python logging.config не доступен?

0 голосов
/ 01 сентября 2018

В учебнике Хорошая практика ведения журналов в Python основной модуль ищет logging.config, но мои установки на python 2.7 не показывают этого, когда я использую dir(logging) и когда я пытаюсь запустить этот пример, я получить:

Traceback (most recent call last):
  File "/Users/your-name-here/logging python/example.py", line 7, in <module>
logging.config.fileConfig('logging.ini')
AttributeError: 'module' object has no attribute 'config'

logging.config определенно обнаруживается в некоторой документации , так что это не ошибка. Почему он не отображается ни в одной из моих установок на python 2.7 (когда я набираю dir(logging), включая мою анаконду с прошлого года, и как мне заставить этот пример работать?

main.py:

import logging

# load my module
import my_module

# load the logging configuration
logging.config.fileConfig('logging.ini')

my_module.foo()
bar = my_module.Bar()
bar.bar()

my_module.py:

import logging

def foo():
    logger = logging.getLogger(__name__)
    logger.info('Hi, foo')

class Bar(object):
    def __init__(self, logger=None):
        self.logger = logger or logging.getLogger(__name__)

    def bar(self):
        self.logger.info('Hi, bar')

logging.ini:

[loggers]
keys=root

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

1 Ответ

0 голосов
/ 01 сентября 2018

Вам нужно импортировать сам модуль, а не просто логировать:

In [1]: import logging

In [2]: 'config' in dir(logging)
Out[2]: False

In [3]: import logging.config

In [4]: 'config' in dir(logging)
Out[4]: True

Почему?

Похоже, что это не модуль, включенный при импорте пакета, поскольку он не является пространством имен __init__.py в пакете ведения журнала, однако он находится в каталоге, поэтому вы все равно можете импортировать его явно:

> pwd
/usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging

ls -1 *py
__init__.py
config.py
handlers.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...