I've had a few discussions with users about logging in QuickFIX/J. There are several issues related to logging than can be confusing. As you may know, QuickFIX/J is based on the QuickFIX C++ JNI API and one of the goals of QuickFIX/J is to be upwardly compatible with the JNI API. The C++ code uses Log and LogFactory abstractions to encapsulate the logging mechanism. This is a reasonable approach, but the design of the abstractions has a few weaknesses.
- ®©
- There is a Log instance per FIX session, and <em>only</em> session-specific logs
- The Log abstraction does not support levels or priorities on the log messages.</li>
- The default Log implementations are not as flexible as [Log4J|http://logging.apache.org/log4j/docs/] or the [JDK 1.4 logger|http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/]
The session-oriented Log means that there is no defined way to log information not associated with a session. Some QuickFIX users have recommended having a global log that's not session-specific but this would not be compatible with existing Log
implementations without some signficant hacks. For example, we could define a pseudo-session identifier and use that for global logging. This seems like a bit of a hack to me.
...