spectrum-python是spectrum(devspectrum.com)的python日志处理程序

spectrum-python的Python项目详细描述


概述

Spectrum是一个有助于 开发人员在开发或调试时过滤和筛选日志 在当地。它通过rest api、syslog或 设置为跟踪本地文件。所有这些日志记录源都很容易 根据开发人员的当前需要显示或隐藏。

这个python包使得将日志从python和/或django推送到spectrum中变得非常容易。

Python

安装python对spectrum的支持非常简单:

$ pip install spectrum-python

设置日志处理程序也同样简单:

import logging
from spectrum.handlers import Spectrum

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

spectrum = Spectrum('my-logging-sublevel')
logger.addHandler(spectrum)

for i in range(5):
    logger.info("This would be sent as INFO.my-logging-sublevel")
    logger.warn("This would be sent as WARNING.my-logging-sublevel")
    logger.debug("This would be sent as DEBUG.my-logging-sublevel")

选项

网址

要使用的rest api的ip和端口。默认为“http://0.0.0.0:9000”。如果使用多个rest api流,则必须将其重写为与流关联的正确频谱端口

子级

用于此处理程序的可选子级别。如果未给定,则默认为频谱用户界面中的“<;无标题>;”。

django

要将django项目中的所有日志记录定向到spectrum,可以使用 在您的设置中预定义消防软管日志记录配置:

# settings.py

from spectrum.django import FIRE_HOSE
LOGGING = FIRE_HOSE

如果使用芹菜,则还有一个设置要添加:

CELERYD_HIJACK_ROOT_LOGGER = False

您还可以使用fire_hose便利方法快速修改 预构建的日志配置dict:

from spectrum.django import fire_hose


LOGGING = fire_hose()

LOGGING = fire_hose(log_db=False)

LOGGING = fire_hose(levels=(
    ('my.overly.verbose.module', 'WARNING'),
    ('some.other.module', 'CRITICAL'),
)

LOGGING = fire_hose(handler_kwargs={'url': '127.0.0.1:12345'})

如果您喜欢更细粒度的方法,可以配置特定的处理程序:

# settings.py

LOGGING = {
    ...
    'filters': {
        'request_id': {
            '()': 'spectrum.filters.RequestIdFilter'
        }
    },
    'handlers': {
        'myloggername': {
            'level': 'DEBUG',
            'class': 'spectrum.handlers.RestSpectrum',
            'sublevel': 'myloggername',
            'filters': ['request_id']
        }
    }
}

确保包含request_idfilter以过滤来自另一方的频谱自身请求。否则,spectrum的请求将由python记录,这些日志将依次生成自己的spectrum请求,从而导致无限递归。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java分割字符串性能   java通过apache POI检索powerpoint文件(.PPTX)中超链接幻灯片的内容   java Dropwizard/Jersey为资源返回204   使用ObjectInputStream#readUnshared()时发生java意外OutOfMemoryError   if语句表示输入字符串之前的数字总和   java将Android应用程序连接到外部数据库(phpmyadmin)   java如何在JFrame中相对地定位项目?   java JSONObject。toMap()实现   java无法启动jboss服务。在船底。部署。默认服务器。默认主机。但课堂是有空的   java使用hamcrest将两个单独列表中的每个项目与自己的matcher进行比较   java我可以用@RepeatedTest注释JUnit5获得变量值吗   java小程序选项不会在每次更改选项项(列表)时调用项状态更改方法。为什么?   JavaPowerMock与依赖注入   通过网络解耦UI和计算的java简单示例   java PostgreSql在本地连接到远程服务器GCP   javascript无法将Json数据从Ajax发送到Servlet   java连接线程建立失败   数组如何对Java中的数据集进行排序