我正在尝试Python日志记录。在
因为我想让一些记录器共享一个格式化程序,所以我使用如下代码所示的日志层次结构。在
如您所见,格式是'%(asctime)s - %(name)s - %(message)s'
此时,我希望日志记录器打印不带父名称的%(name)s
部分。在
我的意思是,通常它会把名字打印成'SYS.Start Up Routine'
,但我想要'Start Up Routine'
有什么办法吗?在
logging.root.level = logging.DEBUG
logger = logging.getLogger('SYS')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
streamHandler = logging.StreamHandler()
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
logger1 = logging.getLogger("SYS.Start Up Routine")
logger2 = logging.getLogger("SYS.Message Layer")
logger3 = logging.getLogger("SYS.Application Layer")
如果你想让名字说“bar”而不是'美食酒吧,只需记录到名为'bar'的记录器,并将处理程序添加到根记录器。在
在示例中添加上下文筛选器:
然后将其添加到处理程序:
^{pr2}$处理程序筛选器是logging flow的最后一部分。此过滤器会在此时更改名称。这允许您使用SYS作为所有日志记录器的根目录(这是一个很好的实践),并允许最终用户决定格式化。在这里,您是自己日志的使用者,您只想打印到stdout,但情况并非总是这样。在
您可以添加一个文件处理程序,将其设置为debug,而不添加上下文过滤器,这样它就包含SYS,因为现在它包含了一大堆其他的记录器,而且根很重要。在
相关问题 更多 >
编程相关推荐