创建交互式浏览器显示的日志文件

时间:2015-06-16 08:26:36

标签: python logging

我用来记录我的python项目上的执行日志模块和我配置为使用DEBUG和以下格式化程序记录的文件处理程序:

fileformatter = logging.Formatter('[%(asctime)s] %(name)s '
                                  '%(funcName)s():%(lineno)d '
                                  '[%(levelname)s] - %(message)s')

现在,我想在浏览器中查看日志文件并能够选择我想要查看的内容!所以可能只有INFO消息或只有ERROR消息或者能够折叠/扩展行!

我假设我有一些如何将日志文件修改为另一种格式,可能是XML,或者这也不是最好的格式!?

2 个答案:

答案 0 :(得分:1)

在浏览器中以交互方式显示日志与静态日志文件方法有很大不同。 您通常只想按原样显示日志文件,而无需进一步处理。

整洁的方式

您希望以不同的格式保存日志是正确的,但XML不能很好地工作。每个XML文档must have only one root-node,因此每次添加日志记录时都必须重写日志文件。

相反,我建议采用以下方法之一:

  • 如果您已经有一个正在运行的数据库,write your logs into it。从那里,您可以轻松访问,搜索和过滤日志。
  • 使用其他标记样式保存日志;例如,YAML不需要像XML那样关闭标签。
  • 回归纯文本格式并使用regular expressions获取过滤信息

在任何情况下,您都需要一些Javascript来处理交互性(显示/隐藏记录,折叠回溯或预定义的块等)。

一个非常简单但不是很好的解决方案

如果您想避免上述所有困难,可以从一开始就创建多个日志文件。 将多个FileHandlers添加到记录器对象,并为每个记录器对象配置不同的文件名和日志记录级别。

这样,您可以通过选择正确的文件来指定要在浏览器中显示的日志记录级别。

答案 1 :(得分:1)

每种格式都有其优缺点,您需要注意。如果是如果你用XML或HTML写出来,你将无法更新文件,因为这些格式的结束元素(例如</BODY></HTML>)会阻止你简单地将新条目附加到文件的末尾。如果你必须解析完整的文件来删除元素,那将是一个很大的开销(但是因为你知道记录器如何写东西,你可以在结束之前将文件指针设置为大约14个字符)。

IMO的主要缺点是由SGML,HTML和XML提供的标记格式虽然人性化可解析,但并不是真正可读的(以便快速发现事物),并且因其巨大的膨胀而效率低下。

我建议您保留格式,并让浏览器构建javascript引擎解析并动态格式化,使其成为您可以在浏览器中读取的内容,包括界面中的某些按钮以禁止某些消息类。