
John Torjo wrote:
Daniel Frey wrote:
John Torjo wrote:
if (activity_log()) activity_log() << ...;
Hm, too verbose for my taste. With the macro, you get it for free.
True. I can also add a macro, something like:
log(activity) << ...;
OK, although there is more to keep in mind. In our logging system, we also added a try/catch macro around the expression that is to be logged. The reason is, that we never want a log-message to abort the program. I attached our actual implementation ('attached' to prevent reformatting), obviously I can't show the complete system :) Regards, Daniel -- Daniel Frey aixigo AG - financial solutions & technology Schloß-Rahe-Straße 15, 52072 Aachen, Germany fon: +49 (0)241 936737-42, fax: +49 (0)241 936737-99 eMail: daniel.frey@aixigo.de, web: http://www.aixigo.de /// The basic underlying LOG-macro (implementing the guard if requested) #ifdef AIXIGO_NO_LOG_GUARD #define AIXIGO_LOG( level, errorLevel, message ) \ do { \ if( ::Base::Log::hasLoggers( level ) ) { \ ::Base::Log::log( level, __FILE__, __LINE__, message ); \ } \ } while( false ) #else #define AIXIGO_LOG( level, errorLevel, message ) \ do { \ try { \ if( ::Base::Log::hasLoggers( level ) ) { \ ::Base::Log::log( level, __FILE__, __LINE__, message ); \ } \ } catch( ... ) { \ ::Base::Log::log( errorLevel, __FILE__, __LINE__, \ "Failed to process " #level " log message \"" #message "\"" ); \ } \ } while( false ) #endif #define LOG_TRACE( message ) AIXIGO_LOG( ::Base::Log::TRACE, ::Base::Log::ERROR, message ) #define LOG_DEBUG( message ) AIXIGO_LOG( ::Base::Log::DEBUG, ::Base::Log::ERROR, message ) #define LOG_INFO( message ) AIXIGO_LOG( ::Base::Log::INFO, ::Base::Log::ERROR, message ) #define LOG_WARN( message ) AIXIGO_LOG( ::Base::Log::WARN, ::Base::Log::ERROR, message ) #define LOG_ERROR( message ) AIXIGO_LOG( ::Base::Log::ERROR, ::Base::Log::ERROR, message ) #define LOG_FATAL( message ) AIXIGO_LOG( ::Base::Log::FATAL, ::Base::Log::FATAL, message )