如何控制QuickFix打印输出

6
我正在使用Python绑定的QuickFix
如何控制QuickFix的输出?
据我所知,没有配置参数可以实现这一点,QuickFix会将大量日志转储到stdout中...
以下是一个日志示例(已用xxxxx替换私人信息):
<20110603-16:56:28.172, FIX.4.3:xxxxx->xxxxx, incoming>
  (8=FIX.4.39=31035=W☺34=549=xxxxx☺52=20110603-16:57:01.87256=xxxxx☺57=xxxxx☺55=xxxxx☺262=cb8f5a29-25bb-4f7b-9ec7-a9a8975715eb☺460=4541=20110607268=2269=0270=2.7632315=xxxxx☺271=2000000276=A☺282=xxxxx☺299=1914b8d_BID☺290=0269=1270=2.7632315=xxxxx☺271=2000000276=A☺282=xxxxx☺299=xxxxx☺290=010=xxxxx☺)
4个回答

8
当你实例化一个QF应用程序时,通常会提供“工厂”,例如:
settings = fix.SessionSettings( fix_settings_file )
storeFactory = fix.FileStoreFactory( settings )
logFactory = fix.ScreenLogFactory( settings )
initiator = fix.SocketInitiator( self, storeFactory, settings, logFactory )
initiator.start()

如果你传递 None 而不是 logFactory(或者等效地省略该参数),QF 将不会在屏幕上记录消息。
settings = fix.SessionSettings( fix_settings_file )
storeFactory = fix.FileStoreFactory( settings )    
initiator = fix.SocketInitiator( self, storeFactory, settings, logFactory = None) # or: fix.SocketInitiator( self, storeFactory, settings)

1
谢谢。我费了好大劲才弄清楚那些糟糕的印刷品是从哪里来的。 - LXJ

6

在配置文件中加入以下内容应该会有所帮助。 N 表示不需要。

ScreenLogEvents=N ScreenLogShowIncoming=N ScreenLogShowOutgoing=N ScreenLogShowHeartBeats=N


这些设置在QuickFix/J配置文档中出现,但在QuickFix配置文档中未出现。你知道它们是否也可以在那里使用,即使没有记录吗? - Jonathan Livni
如果您能在您的场景中尝试它们并与社区分享结果,那将是很好的。 - Groovy
有没有办法将ScreenLogShowOutgoing=Y的输出重定向到文件/参数而不是控制台? - Sakshi Singla

1

您是否正在使用这些配置参数例如FileStorePath?它们通常会将所有消息记录到配置文件中提到的文件和文件夹中。还有一个问题,这些日志消息是否都不是您的?

在库中,没有太多的cout语句记录到标准输出,而是记录到日志文件中。

而您关心的cout语句在Log.h文件中。您可以将它们注释掉或重定向到文件中。


我确定这些不是我的日志。关于你提供的第一个链接 - FileLogPath 似乎没有任何影响。关于你提供的第二个链接 - FileStorePath 改变了存储正文、头部、序列号、会话文件的位置,但对这些日志没有影响。 - Jonathan Livni
看起来你在log.h中的cout是正确的。问题是我正在使用安装的带有Python SWIG绑定的quickfix版本,因此我无法重新编译已注释掉这些cout语句的quickfix。我希望有一个配置可以解决这个问题。 - Jonathan Livni
我尝试进入SWIG生成的文件,并切断Python中onIncoming()与C++ onIncoming()之间的连接,但没有帮助 - 我认为调用它是从quickfix本身内部进行的。 - Jonathan Livni

0
也许你可以简单地重定向到/dev/null。我不想从代码中删除它们,因为它们在调试方面非常有帮助。

在配置文件中是否有可能有一个(布尔)配置来实现这个功能? - Jonathan Livni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接