小编Geo*_*tin的帖子

Python在不同的日志级别记录到多个处理程序?

伙计们,

我正在抓住一个我无法做对的python日志配置.

假设我安装了以下软件包:

mypackage/
   data/mypackage.logging.conf
   module1.py
   module2.py
   scripts/main.py
Run Code Online (Sandbox Code Playgroud)

由于脚本可以交互使用或从crontab运行,因此我有以下要求:

  1. 没有打印声明,一切都通过记录;

  2. 使用a记录timedRotatingFileHandler,始终处于DEBUG级别;

  3. 使用a记录mailinglogger.SummarisingLogger,始终处于INFO级别;

  4. 登录到控制台,默认情况下将级别设置为INFO或通过命令行选项覆盖.

问题是,我可以通过命令行更改日志级别,并相应地更改控制台日志级别,但其他处理程序也更改,我不想要...: - /

在日志记录配置文件中,我不确定我是否理解根记录器级别,其他记录器级别和处理程序级别设置之间的优先级.

这是一些示例代码.任何线索将不胜感激:-)

# mypackage/data/mypackage.logging.conf
[loggers]
root,mypackage

[handlers]
keys=consoleHandler,timedRotatingFileHandler,summarisingHandler

[formatters]
keys=simpleFormatter,consoleFormatter,mypackageFormatter

[logger_root]
#level=INFO
handlers=consoleHandler

[logger_mypackage]
#level=INFO
handlers=timedRotatingFileHandler,summarisingHandler
qualname=mypackage

[handler_consoleHandler]
class=StreamHandler
#level=INFO
formatter=consoleFormatter
args=(sys.stdout,)

[handler_timedRotatingFileHandler]
class=logging.handlers.TimedRotatingFileHandler
level=DEBUG
formatter=mypackageFormatter
args=('mypackage.log', 'M', 1, 5)

[handler_summarisingHandler]
class=mailinglogger.SummarisingLogger
level=INFO
formatter=mypackageFormatter
args=('mypackage@someserver.somewhere.com', ('mypackage-alerts@somewhere.com',), 'relay.somewhere.com')
Run Code Online (Sandbox Code Playgroud)
#mypackage/scripts/main.py:
import logging
import logging.config
import os
import sys

import mypackage.module1
import mypackage.module2

logging.config.fileConfig('data/mypackage.logging.conf')
log = logging.getLogger(__name__)

if __name__ …
Run Code Online (Sandbox Code Playgroud)

python logging config

17
推荐指数
1
解决办法
2万
查看次数

是否可以仅在一个 XSD 文件中展平 XML 架构包?

我有一个由两个 XSD 文件组成的 XSD 包:比如说 A.xsd 和 B.xsd。模式 A 导入(不包括)B 模式。它们有不同的命名空间。

我需要在与xsd:imports.

是否可以在一个且仅一个 XSD 文件中展平一个 XSD 包,或者每个命名空间一个 XSD 文件是绝对最小值?

xml xsd

5
推荐指数
1
解决办法
3908
查看次数

标签 统计

config ×1

logging ×1

python ×1

xml ×1

xsd ×1