如何配置Python 2.3日志消息的格式?

时间:2009-10-29 20:50:22

标签: python logging formatting legacy

在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”调用。有没有办法设置根记录器的格式没有这种重复?谢谢!

1 个答案:

答案 0 :(得分:4)

except:无异常类[es]是一个很好的方法来解决问题。我相信Python 2.3中的logging模块具有basicConfig()函数,但选项较少。由于它接受**kwargs,因此在完成某项工作后的任何时候都可能失败。我认为它已经安装了一个默认格式的处理程序,然后无法配置。捕获异常后,您已安装另一个处理程序。拥有2个处理程序,您可以为每个事件获得2条消息。在您的情况下最简单的方法:完全避免使用basicConfig()并手动配置logging。如果您不重新加载或记录捕获的异常,请不要使用except: