我正在使用精彩的AnyEvent来创建异步TCP服务器(特别是MUD服务器)。
为了保持一切顺利运行并且尽可能少的阻塞/同步代码片段,我已经用异步对应物替换了一些模块,例如AnyEvent::Memcached和AnyEvent::Gearman。这允许主程序非常快速,这是期望的。我已将这些调用的需要编码为同步。
我目前遇到的一个问题是此问题的重点是记录。
在转向此服务器程序的AnyEvent之前,我使用Log::Log4perl因为它允许我微调哪些模块或子程序应该被记录,在哪个级别以及哪个日志输出(屏幕,文件等) )。
这里的问题是Log4perl操作(警告,信息等)当前是同步执行的,但我没有要求,只要日志行最终在屏幕/文件上(并以正确的顺序)
当使用异步事件处理程序(如AnyEvent)时,Log :: Log4perl仍然是正确的选择,还是应该查看其他模块?如果是这样,建议使用哪种?
答案 0 :(得分:2)
你想避免什么?如果它是同步文件IO(写入日志文件/标准输出等),那么您的问题可能会通过异步和/或缓冲的appender来解决,而不是替换代码中的所有Log4perl。
Log::Log4perl::Appender::Buffer似乎可能是一个好的开始,但是完全异步的appender似乎不再存在。
答案 1 :(得分:2)