小编Mik*_*ike的帖子

使用多个模块进行记录时的记录器层次结构和根记录器

我有这个设置:

main.py
/module
/module/__init__.py (empty)
/module.py
Run Code Online (Sandbox Code Playgroud)

这里是我的两个文件的代码,main.pymodule.py分别为:

主文件

import logging
from module import module

logger = logging.getLogger(__name__)

def test():
    logger.warning('in main.py/test')

def main():
    handler = logging.StreamHandler()
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s %(name)s/%(module)s [%(levelname)s]: %(message)s', '%Y-%m-%d %H:%M:%S')
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    logger.warning('in main.py/main')
    module.something()

if __name__ == "__main__":
    main()    
Run Code Online (Sandbox Code Playgroud)

模块.py

import logging
logger = logging.getLogger(__name__)

def something():
    logger.warning('in module.py/something')
Run Code Online (Sandbox Code Playgroud)

所以,我注意到这会输出以下内容(注意模块记录器没有格式):

2019-10-01 09:03:40 __main__/main [WARNING]: in main.py/main
in module.py/something
Run Code Online (Sandbox Code Playgroud)

它只是看起来像后,才进行编辑在main.py以变化logger = logging.getLogger( __ name __ )logger …

python inheritance logging hierarchy python-3.x

8
推荐指数
1
解决办法
1602
查看次数

即使指定了超时,subprocess.run 也不会超时

我有以下 Python 代码:

strRunOutput = subprocess.run([strFastbootExecutable, "-s", dsn.upper(), "reboot"], timeout=5, stderr=subprocess.PIPE).stderr.decode('utf-8').upper()
Run Code Online (Sandbox Code Playgroud)

这基本上是这样做的:

fastboot -s G070GV1871970FCW reboot
Run Code Online (Sandbox Code Playgroud)

这是输出:

< waiting for G070GV1871970FCW >
Run Code Online (Sandbox Code Playgroud)

...这是挂。为什么 fastboot 命令挂起,我不知道,但更让我烦恼的是 subprocess.run 命令在我告诉它的 5 秒后没有超时,并导致我的程序挂起。任何想法发生了什么?

谢谢!

python-3.x

6
推荐指数
1
解决办法
1718
查看次数

pip(python2)和pip3(python3)可以共存吗?

我一直认为pip适用于Python 2,而pip3适用于Python3。要安装不同版本的pip,我需要执行以下操作:

sudo apt-get install python-pip
sudo apt-get install python3-pip
Run Code Online (Sandbox Code Playgroud)

然后我得到了预期的结果:

$ pip --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

但是,这些是旧版本,因此我执行以下操作:

$ sudo pip install pip --upgrade
Run Code Online (Sandbox Code Playgroud)

我得到这个:

$ pip --version
pip 19.0.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

当我为某些软件包安装pip3时,出现以下消息:

You are using pip version 8.1.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Run Code Online (Sandbox Code Playgroud)

好吧,我已经运行过了,所以我尝试一下:

$ …
Run Code Online (Sandbox Code Playgroud)

python pip python-3.x

6
推荐指数
1
解决办法
643
查看次数

如何使用logging.config.dictConfig()设置具有不同设置的多个记录器

我正在尝试使用 dictConfig 设置三个不同的记录器,由于某种原因,最后一个记录器似乎总是覆盖之前创建的两个记录器的配置。这是我正在使用的代码:

import logging
import logging.config

def setup_logger(name, level, ContentFormat='%(asctime)s %(levelname)s %(message)s', DateTimeFormat='%Y-%m-%d %H:%M:%S'):
    logging.config.dictConfig({
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'default': {'format': ContentFormat, 'datefmt': DateTimeFormat},
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
                'level': level,
                'formatter': 'default',
                'stream': 'ext://sys.stdout'
            }
        },
        'loggers': {
            'a': {
                'level': level,
                'handlers': ['console']
            },
            'b': {
                'level': level,
                'handlers': ['console']
            },
            'c': {
                'level': level,
                'handlers': ['console']
            }
        }
    })
    return logging.getLogger(name)

logger_a = setup_logger(name='a', level=logging.INFO, ContentFormat='A: %(message)s')
logger_b = setup_logger(name='b', level=logging.INFO, ContentFormat='B: …
Run Code Online (Sandbox Code Playgroud)

logging python-3.x

3
推荐指数
1
解决办法
3703
查看次数

标签 统计

python-3.x ×4

logging ×2

python ×2

hierarchy ×1

inheritance ×1

pip ×1