Skip to main content

用于配置 Python 日志记录的简单辅助模块

项目描述

版本 特拉维斯 连体工作服 执照

用于配置 Python 日志记录的简单助手模块。

要求

兼容性

  • 蟒蛇2.6

  • 蟒蛇 2.7

  • 蟒蛇 3.2

  • 蟒蛇 3.3

  • 蟒蛇 3.4

依赖项

  • PyYAML

  • logutils(如果使用 Python 2)

安装

pip install logconfig

概述

这个简单的库公开了几个用于配置标准库的日志记录模块的辅助方法。没什么好看的。在后台 logconfig使用logging.config来加载各种配置格式。

除了配置加载之外,logconfig还提供了帮助器,用于轻松转换配置的记录器的处理程序利用队列。

支持的配置格式

  • JSON

  • YAML

  • 配置解析器

  • Python 字典

快速开始

配置加载

import logconfig
import logging

# Load config from JSON file
logconfig.from_json('path/to/file.json')

# Load config from YAML file
logconfig.from_yaml('path/to/file.yml')

# Load config from ConfigParser file
logconfig.from_yaml('path/to/file.cfg')

# Load config from dict
logconfig.from_dict(config_dict)

log = logging.getLogger()
log.debug('Configuration loaded using logconfig')

队列利用率

import logconfig
import logging

logconfig.from_dict({
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG'
        }
    },
    'loggers': {
        'mylogger': {
            'handlers': ['console']
        }
    }
})

# Convert logger's handlers to utilize a queue
queue = logconfig.Queue(-1)
listener = logconfig.QueueListener(queue)
handler = logconfig.QueueHandler(queue)

mylogger = logging.getLogger('mylogger')

# You can also pass in the logger name instead of the actual logger.
# logconfig.queuify_logger('mylogger', handler, listener)
logconfig.queuify_logger(mylogger, handler, listener)

assert isinstance(mylogger.handlers[0], logconfig.QueueHandler)

# Start the listener.
listener.start()

# When finished, stop the listener.
# This is optional, but not doing so may prevent some logs from being processed.
listener.stop()

用法

使用logconfig轻松加载日志记录配置。有关配置日志记录的更多详细信息,请访问https://docs.python.org/library/logging.config.html

import logconfig

来自 JSON 的配置

使用 JSON 文件配置日志记录。

logconfig.from_json(filename)

示例 JSON 文件:

{
    "version": 1,
    "disable_existing_loggers": false,
    "formatters": {
        "simple": {
            "format": "%(asctime)s. - %(name)s - %(levelname)s - %(message)s"
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "stream": "ext://sys.stdout"
        }
    },
    "root": {
        "level": "DEBUG",
        "handlers": ["console"]
    }
}

来自 YAML 的配置

使用 YAML 文件配置日志记录。

logconfig.from_yaml(filename)

示例 YAML 文件:

version: 1
disable_existing_loggers: False
formatters:
  simple:
    format: <s>"%(asctime)s.</s> <s>-</s> <s>%(name)s</s> <s>-</s> <s>%(levelname)s</s> <s>-</s> <s>%(message)s"</s>
handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout
root:
  level: DEBUG
  handlers: [console]

来自 ConfigParser 文件的配置

使用 ConfigParser 兼容文件配置日志记录。

logconfig.from_file(filename)

示例 CFG 文件:

[loggers]
keys=<s>root</s>

[handlers]
keys=<s>console</s>

[formatters]
keys=<s>simple</s>

[logger_root]
level=<s>DEBUG</s>
handlers=<s>console</s>

[handler_console]
class=<s>StreamHandler</s>
level=<s>DEBUG</s>
formatter=<s>simple</s>
args=<s>(sys.stdout,)</s>

[formatter_simple]
format=<s>%(asctime)s - %(name)s - %(levelname)s - %(message)s</s>

来自字典的配置

使用 Python 字典配置日志记录。

logconfig.from_dict(dct)

示例字典:

{
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(asctime)s. - %(name)s - %(levelname)s - %(message)s'
        }
    },
    'handlers': {
        'console': {
            'formatter': 'simple',
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'stream': 'ext://sys.stdout'
        }
    },
    'root': {
        'handlers': ['console'],
        'level': 'DEBUG'
    }
}

来自自动检测的配置

如果,无论出于何种原因,您不知道配置的来源是什么(或者您只是觉得幸运),那么您可以尝试使用以下自动检测方法之一来强制记录配置:

logconfig.from_filename(filename)
logconfig.from_autodetect(filename_or_dict)

try:
    logconfig.from_filename(filename)
    logconfig.from_autodetect(filename_or_dict)
except logconfig.LogConfigException as ex:
    # Unrecognized configuration argument.
    pass

这些方法将尝试将函数参数分派到正确的配置加载器或尝试失败。

从环境变量配置

使用通过环境变量提供的文件名配置日志记录。

logconfig.from_env(variable_name)

注意:环境变量值将传递给from_filename()

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

logconfig-0.4.0.tar.gz (7.8 kB 查看哈希

已上传 source

内置分布

logconfig-0.4.0-py2.py3-none-any.whl (9.9 kB 查看哈希

已上传 py2 py3