/******************************************************************************* * Copyright (c) quickfixengine.org All rights reserved. * * This file is part of the QuickFIX FIX Engine * * This file may be distributed under the terms of the quickfixengine.org * license as defined by quickfixengine.org and appearing in the file * LICENSE included in the packaging of this file. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. * * See http://www.quickfixengine.org/LICENSE for licensing information. * * Contact ask@quickfixengine.org if any conditions of this licensing * are not clear to you. ******************************************************************************/ package quickfix; /** * Allows multiple log factories to be used with QuickFIX/J. For example, * you could log events to the console and also log all events and messages to * a file. */ public class CompositeLogFactory implements LogFactory { private final LogFactory[] logFactories; /** * Defines a composite log factory based on a set of existing * LogFactory implementations. * @param logFactories the factories to be used in the composite * @see LogFactory */ public CompositeLogFactory(LogFactory[] logFactories) { this.logFactories = logFactories; } /** * Create the composite Log. This is typically used by the SessionFactory. * @param sessionID the session associated with the log * @return the composite log * @see SessionFactory */ @Override public Log create(SessionID sessionID) { Log[] logs = new Log[logFactories.length]; for (int i = 0; i < logFactories.length; i++) { if (logFactories[i] instanceof LocationAwareLogFactory) { logs[i] = ((LocationAwareLogFactory) logFactories[i]).create(sessionID, CompositeLog.class.getName()); } else { logs[i] = logFactories[i].create(sessionID); } } return new CompositeLog(logs); } }