Python日志消息重定向和过滤

2024-04-26 03:40:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想扩展一个单用户控制台应用程序,允许访问多个用户。主要目的是让用户看到系统的状态并发出单个命令。你知道吗

所有日志记录都是由python的logging module执行的,这非常好,因为单个用户可以在控制台中指定他感兴趣的日志记录级别。你知道吗

但是,当涉及到允许多个用户时,我需要将日志消息的简单输出抽象到控制台。那么,将输出重定向到我的另一个问题是什么?另外,如何区分各个消息的日志级别,以便向不同的用户显示不同的详细程度?我想我可以只解析out和DEBUG/INFO前缀,但肯定有更好的方法来“标记”单个消息。你知道吗

更多详细信息:

  • 此时,用户在本地控制台上查看消息
  • 将来,将有更多的客户机通过基于web的终端仿真与AJAX更新相连接(因此需要更多的控制)

Tags: 用户命令目的应用程序消息状态logging系统
1条回答
网友
1楼 · 发布于 2024-04-26 03:40:07

这听起来像是一个架构问题。你知道吗

如果我理解你的要求,你要找的是这样的东西

  • 您有一个基于Python的系统,其中一个或多个标准Python记录器正在写入文本文件。你知道吗
  • 您需要允许多个用户实时访问这些日志数据,使用各种过滤技术来控制他们访问的内容。你知道吗
  • 根据他们在分析这些信息时发现的情况,他们可能需要向系统发出命令来修改其行为。你知道吗

考虑到这组需求,我建议采用以下方法。你知道吗

  • 创建一个集中的数据库来存储日志记录。你知道吗
  • 使用标准Python记录器和一个自定义日志处理程序填充数据库,该处理程序直接从记录器与数据库通信。你知道吗
  • 开发一个基于服务器的应用程序,在基于web的客户机和数据库之间进行中介。你知道吗
  • 在服务器日志管理器和原始系统之间使用消息队列,为从用户到系统的命令提供传输机制。你知道吗

有许多包和工具可以用来实现这个场景,但我假设您需要一个主要基于Python的解决方案,并提出一些具体的建议。你知道吗

  • 使用MongoDB作为数据库。你知道吗
  • 使用MongoLog作为日志处理程序,在原始系统和MongoDB数据库之间进行接口。你知道吗
  • 使用Twisted作为核心框架,用Python开发服务器应用程序。你知道吗
  • 使用ZeroMQ作为日志管理器和原始系统之间的消息队列。你知道吗

如果您准备考虑使用非基于Python的解决方案,我建议您使用Meteor(基于Javascript的环境)来开发web客户机环境和日志管理器。你知道吗

相关问题 更多 >