【发布时间】:2020-06-04 22:36:50
【问题描述】:
我试图通过在快速启动之前将 loglevel 设置为 30 来抑制全局和应用层 access_log 输出,但这似乎只适用于全局记录器。我可以在应用程序记录器启动后设置它的日志级别,但我想在它启动之前设置它的日志级别。有谁知道如何做到这一点?
对于全局 access_log,这在启动 cherrypy 之前有效:
cherrypy.log.access_log.setLevel(30)
然而,app_id 在cherrypy 启动之前是未知的,所以我在它启动之前传递了以下配置,但它没有被兑现,并且应用层 access_log 仍然具有 loglevel 20 (INFO)
self._srv_thread = Thread(
target=cherrypy.quickstart,
kwargs={
'root' : self.Root(self,
self._authenticator,
self._authorizer),
'script_name' : '',
'config' : {'/': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
'request.show_tracebacks': False,
'tools.trailing_slash.on': False,
'tools.response_headers.on': True,
**'log.access_log.loglevel' : 30, # <-- not honored !!!!!**
},},
},
daemon=True)
self._srv_thread.start()
日志输出:
2020-06-04 23:28:47,189 rpi1 cherrypy.access.1978553616[5651] INFO 192.168.178.187 - - [04/Jun/2020:23:28:47] "GET /master/loggers HTTP/1.1" 200 1205 "" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0"
启动后,我可以通过以下调用成功更改应用层 access_log 的日志级别:
cherrypy.tree.apps[''].log.access_log.setLevel(30)
如何在cherrypy启动应用程序之前设置两个日志级别?
提前致谢。
【问题讨论】:
-
'log.access_log.on': False怎么样?