Как управлять распечатками QuickFix

Я использую QuickFix с привязками Python.
Как можно управлять распечатками QuickFix?
Насколько я могу судить, нет параметров конфигурации. для этого и QuickFix сбрасывает много журналов в стандартный вывод...

Вот пример журнала (личная информация заменена на xxxxx)

<20110603-16:56:28.172, FIX.4.3:xxxxx->xxxxx, incoming>
  (8=FIX.4.3☺9=310☺35=W☺34=5☺49=xxxxx☺52=20110603-16:57:01.872☺56=xxxxx☺57=xxxxx☺55=xxxxx☺262=cb8f5a29-25bb-4f7b-9ec7-a9a8975715eb☺460=4☺541=20110607☺268=2☺269=0☺270=2.76323☺15=xxxxx☺271=2000000☺276=A☺282=xxxxx☺299=1914b8d_BID☺290=0☺269=1☺270=2.76323☺15=xxxxx☺271=2000000☺276=A☺282=xxxxx☺299=xxxxx☺290=0☺10=xxxxx☺)

person Jonathan    schedule 01.06.2011    source источник


Ответы (4)


Когда вы создаете экземпляр приложения 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)
person bavaza    schedule 02.01.2013

Помещение их в файл конфигурации должно помочь. N означает, что не требуется.

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

person Groovy    schedule 10.07.2012
comment
Эти настройки отображаются в документах конфигурации QuickFix/J, но не в документах конфигурации QuickFix. Вы не знаете, они там тоже работают, хотя и без документов? - person Jonathan; 10.07.2012
comment
Было бы хорошо, если бы вы могли попробовать их в своем сценарии и поделиться результатами с сообществом. - person Groovy; 10.07.2012
comment
Есть ли способ перенаправить вывод для ScreenLogShowOutgoing=Y в ФАЙЛ/параметр вместо консоли? - person Sakshi Singla; 03.05.2018

Используете ли вы эти параметры конфигурации и эти, т.е. FileStorePath? Обычно они регистрируют все сообщения в файле и папке, упомянутых в файле конфигурации. И один вопрос, эти сообщения журнала не принадлежат вам?

В библиотеке не так много операторов cout для входа в стандартный вывод, но в файлы журнала.

И интересующие вас операторы cout находятся в файле Log.h. Вы можете закомментировать их или перенаправить в файл.

person DumbCoder    schedule 01.06.2011
comment
Я уверен, что это не мои журналы. по вашей первой ссылке - FileLogPath, похоже, не имеет никакого влияния. по вашей второй ссылке - FileStorePath изменяется, где хранятся тело, заголовок, seqnums, файлы сеанса и не влияет на эти журналы - person Jonathan; 03.06.2011
comment
@Jonathan - Обновлен ответ. - person DumbCoder; 04.06.2011
comment
Кажется, вы правы насчет cout в log.h. Проблема в том, что я использую установленную версию quickfix с привязками SWIG для Python, поэтому я не могу перекомпилировать quickfix с закомментированными операторами cout. Я надеялся, что для этого есть конфигурация. - person Jonathan; 09.06.2011
comment
Я попытался войти в сгенерированный файл SWIG и разорвать соединение между Python, выставленным onIncoming(), и C++ onIncoming(), но это не помогло - я думаю, что вызов к нему сделан из самого quickfix. - person Jonathan; 09.06.2011

Может быть, вы можете просто перенаправить на /dev/null. Я не хочу удалять их из кода, так как они очень помогают при отладке.

person Groovy    schedule 30.08.2011
comment
Есть ли шанс, что в файле конфигурации может быть (логическая) конфигурация для этого? - person Jonathan; 31.08.2011