将列附加到QuickFix / J Logs数据库(Custom QuickFix / J Logger)

时间:2015-10-09 08:37:11

标签: java database append quickfix quickfixj

QuickFix / J提供将其日志存储在数据库中的功能。

是否可以将其他列(业务ID)追加到其中一个表中,以免在QuickFix / J的内部消息记录中出现问题?

如果有可能,请提及这样做的程序。

1 个答案:

答案 0 :(得分:2)

解决方案是创建自己的Logger和LoggerFactory,类似于QuickFix / J提供的。

您可以通过实施" quickfix.Log"来创建记录器。接口和LoggerFactory通过实现" quickfix.LogFactory"接口。

最简单的方法是使用QuickFix / J中的私有AbstractLog。

创建Log类:

  
      
  1. 从QuickFix / J的源代码复制AbstractLog课程,并将其包含在您的项目中。
  2.   
  3. 创建一个扩展AbstractLog类并实现所有抽象方法的类。
  4.   
  5. 为要附加到日志的任何额外字段创建成员变量(例如,业务ID),并提供一个构造函数,其中包含   作为论据并设定其价值。
  6.   
  7. " logIncoming"和" logOutgoing" methods接受String参数。这是您要记录的数据。此时你可以   将您自己的字段(在第3点中添加)附加到日志中。你可以格式化   你想要的日志,你可以自由使用任何输出方法,即   控制台,数据库等,因为您必须自己实现它。
  8.   

创建LoggerFactory:

  
      
  1. 创建一个实现quickfix.LogFactory接口的LoggerFactory。

  2.   
  3. 在"创建"方法,创建并返回您使用所需构造函数之前创建的Logger实例。

  4.   
  5. 您需要传递给构造函数的值可以保存为LoggerFactory的成员变量并设置为   LoggerFactory的构造函数。

  6.   

您现在有一个自定义Logger,可以使用QuickFix / J自己的记录器,QuickFix / J将使用您的记录器自动记录。

ApplicationAdapter application = new FixInitiator();
SessionSettings settings = new SessionSettings("./config/initiator.cfg");
CustomLogFactory customLogFactory = new CustomLogFactory(settings, myCustomID);
DefaultMessageFactory messageFactory = new DefaultMessageFactory();
FileStoreFactory fileStoreFactory = new FileStoreFactory(settings);
socketInitiator = new SocketInitiator(application, fileStoreFactory, settings, customLogFactory, messageFactory);
socketInitiator.start(); 

看看QuickFix / J自己的Logger和LoggerFactory实现获得帮助将是一个好主意。 例如登录控制台的记录器:ScreenLogScreenLogFactory

QuickFix / J来源:

  

https://github.com/quickfix-j/quickfixj