如何禁用所有Quickfix / n的日志和文件工厂?我想自己处理所有日志记录和消息发送,因为我不喜欢Quickfix如何获取日志消息的方式,这意味着我想决定日志消息的发布时间和方式。有没有办法完全禁用任何基于屏幕或基于文件的日志记录?
由于
答案 0 :(得分:1)
应该有一个NullLogFactory,但我目前没有看到一个,我有点困惑为什么不。我以为有一个。 (如果你不知道,我维持QF / n。)
但你可以这样创建一个:
public class NullLogFactory : ILogFactory
{
SessionSettings settings_;
#region LogFactory Members
public NullLogFactory(SessionSettings settings)
{}
public ILog Create(SessionID sessionID)
{
return new QuickFix.NullLog();
}
#endregion
}
下一个QF / n版本将包含一个空工厂或其他东西来填补这个空白。
答案 1 :(得分:1)
旧问题,但可能对搜索此内容的人有用。
如果您想更容易启用/禁用日志记录,我认为在app.config文件中设置一个值并在套接字启动程序类中处理它会更好:
<强>的App.config 强>
<appSettings>
<add key="LogMessages" value="false"/>
</appSettings>
申请代码
bool logMessages = Convert.ToBoolean(ConfigurationManager.AppSettings["LogMessages"]);
try
{
SocketInitiator initiator;
QuickFix.SessionSettings settings = new QuickFix.SessionSettings(file);
MessageProcessor application = new MessageProcessor();
QuickFix.IMessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
QuickFix.ILogFactory logFactory = new QuickFix.FileLogFactory(settings);
if (!logMessages)
{
initiator = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings);
}
else
{
initiator = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);
}
application.MyInitiator = initiator;
initiator.Start();
while (!initiator.IsLoggedOn)
{
//wait until the initiator has logged on
}
//do stuff
}
catch
{// exception handling code}