[英]Quickfix/n, how to disable store and log factories?
如何禁用所有Quickfix / n的日志和文件工廠? 我想自己處理所有日志記錄和消息發送,因為我不喜歡Quickfix如何獲取日志消息的方式,這意味着我想決定日志消息的發布時間和方式。 有沒有辦法完全禁用任何基於屏幕或基於文件的日志記錄?
謝謝
應該有一個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版本將包含一個空工廠或其他東西來填補這個空白。
舊問題但可能對搜索此問題的人有用。
如果您想更容易啟用/禁用日志記錄,我認為在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}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.