gpt4 book ai didi

c++ - 具有进程间通信功能的服务器-客户端日志记录体系结构。您知道解决方案吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:46 24 4
gpt4 key购买 nike

现在我有:

  • C++编写的多线程 Windows服务,它使用常见的静态库以及动态DLL;
  • 每个线程执行不同的任务并产生不同的错误(DB错误,函数调用错误等)。每个线程还将充当logger client(并将所有消息发送到logger server);
  • 的单独线程,该线程尚无主体,但是该将充当logger server,用于处理中所有日志消息

  • 对于如何将以下想法实施为可行的解决方案,我需要一个很好的建议。这个想法是向我的多线程服务器添加服务器-客户端日志记录体系结构,并具有以下要求(尽管我需要自己实现某些部分,请仅考虑logger clientslogger client的基本思想):
  • 应该有很多的logger server(正如我已经提到的,log clients只是一个存在的工作线程),每个应该注册一个具有唯一名称或ID的实体并具有以下行为:
  • 如果log client已启动并正在运行,则此logger server开始发送日志消息
  • 否则,
  • (log client已关闭),logger server会尝试使用较小的超时时间向log client注册自己。
  • 应该有一个log server,具有以下行为:
  • logger server使用其唯一名称或ID注册所有log server,并不断检查是否有新的日志客户端要注册
  • 日志服务器处理来自不同 log clients的所有消息,并写入数据库,文件等。
  • 应该有一个机会,可以从外部应用程序建立到 log clients的连接(例如, MySuperThreadViewerProgram 来监视所有线程 Activity /错误/等)。在连接时,log server应该将外部应用程序视为另一个 log server这是最重要的要求。

  • 总结起来,有三个要实现的体系结构部分:
  • 服务器-客户端记录器体系结构;
  • log client之间的消息队列工具log clients 会定期检查是否有可用的日志客户端要注册;
  • log server与外部应用程序之间的进程间通信,其中外部应用程序充当新的log server

  • Please, note, I consider a logger server as a kind of log message router.



    因此,主要问题是:

    Is there any solution (software framework) which has all described above features (which is much preferably) or I should use different libraries for different parts?



    如果答案是:“没有这样的解决方案”,您能否回顾一下我所做的选择:
  • 对于#1:使用 Pantheios 记录器框架;
  • 对于#2:使用具有服务器-客户端体系结构和消息队列支持的任何类型的注册-订阅库(更新:ipc library);
  • 对于#3:使用 Boost.Interprocess -使用SharedMemory。


  • 更新:

    #2的好例子是 this ipc library。也许我对 log server 关系的描述有点不正确,但我的意思实际上与 ipc 库中充分描述和实现的方法类似: ,当一个实体(线程)订阅另一个实体以接收其消息(或“发布-订阅”模型)。
    我想使用这种技术来实现我的日志记录体系结构。但是用什么方式呢?

    UPDATE2:

    操作系统是Windows。是的,我知道,在Linux下有很多有用的工具和框架(D-Bus,Syslog)。也许你们中的某些人可以提供有用的跨平台库链接,这可能有用吗?在Windows下,也许在D-Bus 上有一个 记录器框架?

    任何意见,高度赞赏。

    非常感谢!

    最佳答案

    ØMQ(ZeroMQ)可能是您提到的ipc库的可行替代方案,因为它具有许多符合您需求的功能。

    它完全支持PUB / SUB模型,允许您在线程之间,进程之间甚至机器之间工作。它是一个客户端-服务器体系结构,一个消息队列,也可以用作IPC。

    当然,您需要一种特定的消息编码和解码方式, Protocol Buffer 确实是个好主意。

    关于c++ - 具有进程间通信功能的服务器-客户端日志记录体系结构。您知道解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10714118/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com