伙计们,
我正在抓住一个我无法做对的python日志配置.
假设我安装了以下软件包:
mypackage/
data/mypackage.logging.conf
module1.py
module2.py
scripts/main.py
Run Code Online (Sandbox Code Playgroud)
由于脚本可以交互使用或从crontab运行,因此我有以下要求:
没有打印声明,一切都通过记录;
使用a记录timedRotatingFileHandler
,始终处于DEBUG级别;
使用a记录mailinglogger.SummarisingLogger
,始终处于INFO级别;
登录到控制台,默认情况下将级别设置为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) 我有一个由两个 XSD 文件组成的 XSD 包:比如说 A.xsd 和 B.xsd。模式 A 导入(不包括)B 模式。它们有不同的命名空间。
我需要在与xsd:imports
.
是否可以在一个且仅一个 XSD 文件中展平一个 XSD 包,或者每个命名空间一个 XSD 文件是绝对最小值?