问题描述
我正在运行一个金字塔式Web应用程序,并且我想拥有两个日志,第一个日志应将所有内容输出到控制台(stderr),而另一个则写入文件。 我的ini文件的相关部分如下所示:
[loggers]
keys = root,pyramide
[handlers]
keys = console,logfile
[formatters]
keys = simple,detailed
[logger_root]
level = DEBUG
handlers = console
[logger_pyramide]
level = DEBUG
handlers = logfile
qualname = pyramide
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = detailed
[handler_logfile]
class = handlers.RotatingFileHandler
args = ('monitoreo.log','a',10000)
level = DEBUG
formatter = simple
[formatter_simple]
format = %(asctime)s %(levelname)-5.5s %(message)s
[formatter_detailed]
format = %(asctime)s %(levelname)-5.5s [%(pathname)s:%(lineno)s] %(message)s %(args)s %(exc_info)s
注意:对于该测试,我已经将每个级别都设置为DEBUG。我最终将改变它。
在我的 __ init __。py 中,我有这个(我只张贴代码的相关部分):
from logging import getLogger
pyramide_log = getLogger('pyramide')
root_log = getLogger('whatever')
pyramide_log.debug("greetings from __init__ .. pyramide")
root_log.debug("greetings from __init__ .. root")
def root_factory(request):
conn = get_connection(request)
return appmaker(conn.root())
def main(global_config,**settings):
pyramide_log.info("starting web app.. pyramide")
root_log.info("starting web app.. root")
with Configurator(settings=settings) as config:
并且在我拥有导入之后的 views / __ init __。py 中(仅相关行):
from logging import getLogger
pyramide_log = getLogger('pyramide')
root_log = getLogger('whatever')
pyramide_log.debug("greetings from views/__init__ .. pyramide")
root_log.debug("greetings from views/__init__ .. root")
现在的问题是,当我启动应用程序并刷新开始页面时,我在日志文件中找到了我期望的内容,
2020-10-07 18:59:14,366 DEBUG greetings from __init__ .. pyramide
2020-10-07 18:59:14,384 INFO starting web app.. pyramide
2020-10-07 18:59:14,758 DEBUG greetings from views/__init__ .. pyramide
但是在控制台中,我看到的是
Starting monitor for PID 21712.
2020-10-07 18:59:14,366 DEBUG [pyramide/__init__.py:12] greetings from __init__ .. pyramide () None
2020-10-07 18:59:14,366 DEBUG [pyramide/__init__.py:13] greetings from __init__ .. root () None
2020-10-07 18:59:14,384 INFO [pyramide/__init__.py:22] starting web app.. pyramide () None
2020-10-07 18:59:14,384 INFO [pyramide/__init__.py:23] starting web app.. root () None
2020-10-07 18:59:14,572 DEBUG [venv/lib/python3.7/site-packages/ZODB/BaseStorage.py:83] create storage route/to/Data.fs ('route/to/Data.fs',) None
2020-10-07 18:59:14,573 DEBUG [venv/lib/python3.7/site-packages/transaction/_transaction.py:108] new transaction () None
2020-10-07 18:59:14,573 DEBUG [venv/lib/python3.7/site-packages/transaction/_transaction.py:289] commit () None
2020-10-07 18:59:14,758 DEBUG greetings from views/__init__ .. pyramide : ()
Starting server in PID 21712.
Serving on http://0.0.0.0:6543
我没想到的第一件事就是pyramide_log的消息,我可以接受,没问题。我不明白的是:
- 为什么第一个条目遵循定义的格式,但最后一个条目不遵循。它与文件被抛出的位置有什么区别吗?为什么?
- 为什么我使用pyramide_log而不是root_log从 views / __ init __。py 获得“问候”?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)