日志处理器和zc.z3monitor插件用于监控日志活动
项目描述
zc.monitorlogstats提供zc.z3monitor插件和日志处理器来跟踪日志统计信息。想法是可以连接到它来了解各种类型的日志条目数量。如果随着时间的推移进行采样,可以看到添加了多少条条目。特别是,如果您收到新的警告、错误或关键条目,有人可能想要查看日志以了解发生了什么。
日志处理器计数
让我们先看看日志处理器。工厂zc.monitorlogstats.CountingHandler可以像其他处理器一样安装。它不发出任何内容。它只是计数。
让我们创建一个来看看它的工作原理
>>> import logging, zc.monitorlogstats >>> handler = zc.monitorlogstats.CountingHandler() >>> logging.getLogger().addHandler(handler) >>> logging.getLogger().setLevel(logging.INFO)
现在,让我们记录
>>> for i in range(5): ... logging.getLogger('foo').critical('Yipes')>>> for i in range(9): ... logging.getLogger('bar').error('oops')>>> for i in range(12): ... logging.getLogger('baz').warn('hm')>>> for i in range(21): ... logging.getLogger('foo').info('yawn')>>> for i in range(99): ... logging.getLogger('xxx').log(5, 'yuck yuck')
我们可以要求处理器提供统计信息
>>> handler.start_time datetime.datetime(2008, 9, 5, 21, 10, 14)>>> for level, count, message in handler.statistics: ... print level, count ... print `message` 20 21 'yawn' 30 12 'hm' 40 9 'oops' 50 5 'Yipes'
统计信息包括日志级别、日志消息计数以及最后一条消息的格式化文本。
我们也可以要求它清除其统计信息
>>> handler.clear() >>> for i in range(3): ... logging.getLogger('foo').critical('Eek')>>> handler.start_time datetime.datetime(2008, 9, 5, 21, 10, 15)>>> for level, count, message in handler.statistics: ... print level, count ... print `message` 50 3 'Eek'
有ZConfig支持用于定义计数处理器
>>> import ZConfig, StringIO >>> schema = ZConfig.loadSchemaFile(StringIO.StringIO(""" ... <schema> ... <import package="ZConfig.components.logger"/> ... <multisection type="logger" attribute="loggers" name="*" required="no"> ... </multisection> ... </schema> ... """))>>> conf, _ = ZConfig.loadConfigFile(schema, StringIO.StringIO(""" ... %import zc.monitorlogstats ... <logger> ... name test ... level INFO ... <counter> ... format %(name)s %(message)s ... </counter> ... </logger> ... """))>>> testhandler = conf.loggers[0]().handlers[0]>>> for i in range(2): ... logging.getLogger('test').critical('Waaa') >>> for i in range(22): ... logging.getLogger('test.foo').info('Zzzzz')>>> for level, count, message in handler.statistics: ... print level, count ... print `message` 20 22 'Zzzzz' 50 5 'Waaa'>>> for level, count, message in testhandler.statistics: ... print level, count ... print `message` 20 22 'test.foo Zzzzz' 50 2 'test Waaa'
请注意,测试处理器输出的消息输出反映了我们设置时使用的格式。
上面的示例说明了您可以安装任意数量的计数处理器。
监控插件
zc.monitorlogstats监控插件可用于查询日志统计信息。
>>> import sys >>> plugin = zc.monitorlogstats.monitor(sys.stdout) 2008-09-05T21:10:15 20 22 'Zzzzz' 50 5 'Waaa'
输出包括具有统计信息的每个日志级别的开始时间和行。每个统计行包含日志级别、条目计数和最后一条日志消息的repr。
默认情况下,将使用根记录器。您可以指定记录器名称
>>> plugin = zc.monitorlogstats.monitor(sys.stdout, 'test') 2008-09-05T21:10:16 20 22 'test.foo Zzzzz' 50 2 'test Waaa'
您可以使用“.”表示根记录器
>>> plugin = zc.monitorlogstats.monitor(sys.stdout, '.') 2008-09-05T21:10:15 20 22 'Zzzzz' 50 5 'Waaa'
请注意,如果为记录器定义了多个计数处理器,则仅使用第一个。(所以不要定义多个。)
命名没有计数处理器的记录器是错误的
>>> plugin = zc.monitorlogstats.monitor(sys.stdout, 'test.foo') Traceback (most recent call last): ... ValueError: Invalid logger name: test.foo
您可以使用第二个参数并指定值为“clear”来清除统计信息
>>> plugin = zc.monitorlogstats.monitor(sys.stdout, 'test', 'clear') 2008-09-05T21:10:16 20 22 'test.foo Zzzzz' 50 2 'test Waaa'>>> plugin = zc.monitorlogstats.monitor(sys.stdout, 'test', 'clear') 2008-09-05T21:10:17
下载
项目详情
关闭
zc.monitorlogstats-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 347d2254048f6062450be36e1fa6274adeb09a4042b68e36f2761f700cfb9251 |
|
MD5 | 21a0333b05d8e4d680a169e8770fd2e6 |
|
BLAKE2b-256 | c8a010335898a84119558e5f9b4a5bf87afb15e024abdf1b94e29a766c28bb3e |