python,twistedmatrix ...通过套接字记录

时间:2013-06-25 16:25:51

标签: python logging twisted

我需要一些帮助来评估扭曲矩阵应用程序的正确设计。或任何帮助这样做的网址。

  • 后台:我现在使用twistedmatrix中包含的日志记录容量FileLogObserver和自定义DailyLogFile来支持并将数据保存到文件系统,以供日后分析。

现在,我将使用许多不同的应用程序,这些应用程序将完成他们的工作,并在许多文件扭曲日志(区分文件)中将日志消息作为定时事件发送。因此,我的活动由(timestamp, data)

组成

我需要一些方法来读取实时中的每条记录消息(timestamp, data)集中按时间对它们进行分组的事件,即拥有对具有完全相同时间戳的所有事件进行一些计算和分组。

我是正确的,我认为我可以使用扭曲的日志功能来做到这一点吗?

你会如何以简单的方式设计它?

我目前的想法是构建一个套接字扭曲记录器并复制日志记录进程,以便每个事件将被发送到文件记录器(我需要分离的历史记录),但也通过套接字发送到接收器(我现在也需要实时) 。如果我正确地挖掘这种方式,是否有人有这样的扭曲插座记录器的骨架?我怎么能把两个记录器从扭曲中链起来?

另一部分什么应该是正确的记录器接收器?

因为我也会使用下面的方案在lighstreamer服务器上传播计算/收集的数据可能会有一些我可能没有看到的困难,需要一些线程机制或其他机制来避免一些阻塞网络呼叫? / p>

feed = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
feed.connect(("localhost",MYPORT))

feed.send(mytimestamp, myeventdata)

作为一个数字,它可以被模式化为:with(几乎所有实时)

producerTimedEventLog1 --->|
producerTimedEventLog2 --->|
...                        |---> loggerReceiverComputingData ---> lighstreamer process ---> mozilla or whatever webclient
...                        |
producerTimedEventLognN--->| 

每个producerTimedEventLognN也记录到一个文件。

我对每个有用的想法感兴趣:)

最好的问候

2 个答案:

答案 0 :(得分:3)

我了解您的系统中涉及多台计算机(独立计算机),对吧?然后,首先,您需要确保发送事件的各种机器的时钟在某种程度上同步。但是,由于始终存在时间同步错误,因此必须考虑“具有完全相同时间戳的所有事件”的含义。从我的角度来看,您需要定义任意时间delta值。然后,您只需在此时间增量内定义具有时间戳的所有事件,即“同时”发生。

其次,如果我理解正确,你希望“生产者”通过TCP将他们的事件发送到“收集器”。这就提出了一个问题,即您是否已经拥有某种通信协议,您可以简单地添加时间戳事件的通信,或者您是否需要建立一个独立的通信层(收集器上的不同TCP套接字)。 / p>

在任何情况下,您可能希望创建一个简单的事件类来存储事件消息(日志消息和任何所需的数据)以及创建时间戳。生产者创建此类的实例。然后,您可以使用pickle通过字节流(TCP连接)将某个事件传输到收集器。收集器可以解开并处理它。

请注意Linux上的time.time()分辨率高于Windows的事实。

答案 1 :(得分:2)

您可以在PythonLoggingObserver之外添加FileLogObserver。然后配置python logger将消息发送到syslog。 Syslog可以配置为向中央服务器发送消息。在中央服务器上,您可以将消息保存到日志文件,并让另一个应用程序使用LogReader读取日志文件。

您还需要NTP来同步时钟。