簡體   English   中英

Quickfix / n,如何禁用存儲和日志工廠?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM