代码之家  ›  专栏  ›  技术社区  ›  uhoh Jacob

python日志记录.config无法使用的?

  •  0
  • uhoh Jacob  · 技术社区  · 6 年前

    Good logging practice in Python 主模块查找 logging.config 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'
    

    日志记录.config 当然会出现在一些 documentation 所以这不是一个错误。为什么在我的python2.7安装中(当我键入 目录(日志) 我怎样才能让这个例子起作用呢?

    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()
    

    我的_模块.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')
    

    日志记录.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 回复  |  直到 6 年前
        1
  •  11
  •   salparadise    6 年前

    您需要导入模块本身,而不仅仅是日志:

    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