在Python 2.4及更高版本中,将日志记录模块配置为具有更基本的格式很容易:
logging.basicConfig(level = opts.LOGLEVEL,format =“%(message)s”)
但对于需要支持Python 2.3的应用程序来说似乎更难,因为日志API在Py2.4中进行了大修。特别是,basicConfig不带任何参数。尝试在Py2.3文档中的唯一示例的变体,我得到这个:
try:
logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
logging.getLogger().setLevel(opts.LOGLEVEL)
h = logging.StreamHandler()
h.setFormatter(logging.Formatter("%(message)s"))
logging.getLogger().addHandler(h)
但在Py2.3中调用此根记录器,例如
logging.info("Foo")
给出重复的输出:
Foo
INFO:root:Foo
我找不到修改Py2.3中根记录器上现有处理程序格式的方法(上面的“除”块),因此产生重复输出的“addHandler”调用。有没有办法设置根记录器的格式没有这种重复?谢谢!
答案 0 :(得分:4)
except:
无异常类[es]是一个很好的方法来解决问题。我相信Python 2.3中的logging
模块具有basicConfig()
函数,但选项较少。由于它接受**kwargs
,因此在完成某项工作后的任何时候都可能失败。我认为它已经安装了一个默认格式的处理程序,然后无法配置。捕获异常后,您已安装另一个处理程序。拥有2个处理程序,您可以为每个事件获得2条消息。在您的情况下最简单的方法:完全避免使用basicConfig()
并手动配置logging
。如果您不重新加载或记录捕获的异常,请不要使用except:
。