diff -r 6bcf277166c1 -r 451b2e1545b2 common/radiologger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/radiologger.cpp Thu Jul 22 16:33:45 2010 +0100 @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// System includes +#include + +// User includes +#include "radiologger.h" + +/*! + * + */ +void RadioLogger::initCombinedLogger() +{ +#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32 + TRAP_IGNORE( RadioEngineUtils::InitializeL() ); + if ( !MRadioEngineLogger::Logger() ) { + qDebug() << "FMRadioUi: Cannot combine logs with engine. Engine logger not active"; + } +#endif // LOGGING_ENABLED +} + +/*! + * + */ +void RadioLogger::releaseCombinedLogger() +{ +#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32 + RadioEngineUtils::Release(); +#endif // LOGGING_ENABLED +} + +/*! + * enum Mode { Normal, MethodEnter, MethodExit, DecIndent }; + */ +void RadioLogger::logMsg( const char* msg, Mode mode ) +{ + Q_UNUSED( msg ); + Q_UNUSED( mode ); +#if defined LOGGING_ENABLED && defined COMBINE_WITH_ENGINE_LOGGER && !defined BUILD_WIN32 + MRadioEngineLogger* logger = MRadioEngineLogger::Logger(); + if ( logger ) { + if ( mode == RadioLogger::Normal ) { + logger->AddIndent(KMarkerUi()).Add( msg ).Commit(); + } else if ( mode == RadioLogger::MethodEnter ) { + logger->AddIndentClear( KMarkerUi() ).Add( msg ).Commit(); + logger->IncIndent(); + } else if ( mode == RadioLogger::MethodExit ) { + logger->DecIndent(); + logger->AddIndentClear( KMarkerUi() ).Add( msg ).Commit(); + } else if ( mode == RadioLogger::DecIndent ) { + logger->DecIndent(); + } else {} + } +#endif // LOGGING_ENABLED +} + + +#ifdef LOGGING_ENABLED + +#include +#include +#include +#include + +#ifdef TRACE_TO_FILE + QFile mDebugFile; + bool mFilterByLogMarker = false; +#endif + +const char* KLogEnter = "\\ %s"; +const char* KLogExit = "/ %s"; +const char* KLogExitRet = "/ %s, Returning %s"; +const char* KLogExitException = "/ %s, Exception raised"; +const char* KLogLine = "| "; + +/*! + * + */ +#if defined(__WINS__) +static QString formatString( const char* format, long val ) +{ + if ( strcmp( format, "" ) == 0 ) { + return ""; + } + QString string; + string.sprintf( format, val ); + return string; +} +#endif + +/*! + * + */ +MethodLogger::MethodLogger( const char* function, const char* format ) : + mFunction( function ), + mFormat( format ) +{ + QString msg; + msg.sprintf( KLogEnter, mFunction ); + WRITELOG_METHOD_ENTER( msg ); +} + +/*! + * + */ +MethodLogger::~MethodLogger() +{ + if ( std::uncaught_exception() ) { + QString msg; + msg.sprintf( KLogExitException, mFunction ); + WRITELOG_METHOD_EXIT( msg ); + } else { + QString msg; + if ( strlen( mFormat ) > 0 ) { + #if defined(__WINS__) + + long retVal = 0; + _asm( mov retVal, ebx ); + msg.sprintf( KLogExitRet, mFunction, formatString( mFormat, retVal ) ); + WRITELOG_METHOD_EXIT( msg ); + + #else + msg.sprintf( KLogExit, mFunction ); + WRITELOG_METHOD_EXIT( msg ); + #endif + } else { + msg.sprintf( KLogExit, mFunction ); + WRITELOG_METHOD_EXIT( msg ); + } + } +} +#else + +MethodLogger::MethodLogger( const char*, const char* ) +{ +} + +MethodLogger::~MethodLogger() +{ +} + +#endif // LOGGING_ENABLED + + +#ifdef TRACE_TO_FILE + +/*! + * + */ +void FileLogger::installMessageHandler( const QString& fileName, bool filterByMarker ) +{ + mDebugFile.setFileName( fileName ); + mFilterByLogMarker = filterByMarker; + + mDebugFile.open( QIODevice::Text | QIODevice::WriteOnly ); + + if ( mDebugFile.isOpen() ) { + qInstallMsgHandler( FileLogger::handleMessage ); + } +} + +/*! + * + */ +void FileLogger::uninstallMessageHandler() +{ + if ( mDebugFile.isOpen() ) { + qInstallMsgHandler( 0 ); + mDebugFile.close(); + } +} + +/*! + * + */ +void FileLogger::handleMessage( QtMsgType type, const char* msg ) +{ + QTextStream debugStream( &mDebugFile ); + QDateTime dateTime( QDateTime::currentDateTime() ); + + if ( type == QtDebugMsg ) { + QString message( msg ); + if ( mFilterByLogMarker && message.contains( QString( LOGMARKER ) ) ) + { + debugStream << dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz") << " : " << message << endl; + } + } +} +#endif // TRACE_TO_FILE