QWFIX system is built on top of the QWFramework. Event logging is part of the QWFramework.
ApplicationLog is the abstract event persistence defined in QWFramework. The ApplicationLog.getDefault() points to the default application log of the current process. Initially the ApplicationLog.getDefault() points to an instance of ConsoleApplicationLog, which outputs the contents of the log message to the system console (stand error output).
If FIXStandaloneApplication is used, the system automatically creates a file based application log persistence once FIXStandaloneApplication.run() is called. The system will make sure once one instance of the log persistence is created during the life cycle of the FIXEngine (See "Scheduler"). If the process is killed and restarted during the normal trading hour, the application log will be resumed and new log messages will be appended while the old log messages will still be kept.
The file based application log can be retrieved by a remote process. That's how the GUI based monitoring tool QWRTAnalyzer retrieves event logs from the remote process (See "Alert Monitor").
Instances of LogMessage can be written to the application log. LogMessage is an abstract class. Teraspaces defines a DefaultLogMessage, which can be used for general purpose application event logging. Note the LogMessage has nothing to do with FIXMessage.
Writing log message is simple, it only takes one line of code, as shown below:
//import com.teraspaces.qwframework.logging.ApplicationLog;
|
FIXSessionMessageLogMessage message should be used to log an event related to a FIXMessage. Note this message can be recognized by the remote monitoring tool QWRTAnalyzer. The RTAnalyzer GUI can help user navigate to the FIX message and even the related FIX order from the event log message.
The logging framework is 100% interoperable among all flavors of QWFIX, QWFIX.Net, QWFIX_J, QWFIX_RTSJ and QWFIX_C++. The log written by one language can be processes by another language.
With the remote management feature enabled, all log entries can be monitored by remote process in real-time, using "QWFIX RTAnalyzer". QWFIX is not just a trading platform infrastructure. It is also a development platform. Cross platform/programming language remote logging is very useful in development.
The logging framework in QWFramework is very powerful with extremely high performance. The performance is better than any other popular logging framework in the industry. Application developer can define their own log messages containing virtually any information they want.
For now the DefaultLogMessage and FIXSessionMessageLogMessage should be enough for most of the QWFIX enabled applications. We will publish more articles about the logging framework development in the near future to demonstrate the potential of the system.