diff -r 594d59766373 -r 7d48bed6ce0c vmbx/vmbxcpplugin/inc/loggerutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vmbx/vmbxcpplugin/inc/loggerutil.h Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,149 @@ +/* +* Copyright (c) 2009 -2010 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: +* +*/ + +#ifndef __LOGGERUTIL_H +#define __LOGGERUTIL_H + +// INCLUDES +#include +#include +#include + +/*************************** + * LOGGER SETTINGS + ***************************/ + +#ifndef _DEBUG + +/** + * Logging method setting: + * 0 = No logging + * 1 = File logging, see additional comments later in this file! + * 2 = Debug output + */ +#define _LOGGERUTIL_LOGGING_METHOD 0 // UREL BUILD + +#else + #ifdef __WINS__ + #define _LOGGERUTIL_LOGGING_METHOD 1 // UDEB BUILD, WINS + #else + #define _LOGGERUTIL_LOGGING_METHOD 2 // HW UDEB + #endif // __WINS__ +#endif // _DEBUG + +// Update this prefix for your component-specific string +#define KDBGLOGPRE "VMBXUI: " + +#if _LOGGERUTIL_LOGGING_METHOD == 1 + #define KLOGGERUTILNEWLINE "\n" + // Log file location, file created if path exists + const QString KLOGGERUTILLOGFILE("c:\\logs\\vmbx\\vmbxui.txt"); +#elif _LOGGERUTIL_LOGGING_METHOD == 2 +#endif //_LOGGERUTIL_LOGGING_METHOD + +/*************************** + * FILE LOGGING IMPLEMENTATION + ***************************/ +#if _LOGGERUTIL_LOGGING_METHOD == 1 + class DbgLoggerUtil + { + public: + + // Constructor opens a file and prints newline+timestamp + // + // NOTICE the file is not closed if only constructor is run, + // other method(s) close the file later explicitly. + // + // NOTICE that file logging mode uses "append" so the file will grow + // indefinitely unless manually deleted. Reason for this is that each + // trace line opens&closes the file separately, so overwriting "truncate" + // mode would result in the file containing only the latest trace line + // and nothing more. + DbgLoggerUtil() : mFile( KLOGGERUTILLOGFILE ), mDbg( &mFile ) + { + if ( mFile.open(QFile::WriteOnly | QFile::Append/*Truncate*/) ) + { + mDbg << KLOGGERUTILNEWLINE << KDBGLOGPRE + << QTime::currentTime().toString(); + } + } + /* Debugging method, remove from production code. + ~DbgLoggerUtil() + { + qDebug() << "~DbgLoggerUtil()"; + } + */ + // This operator writes the argument to file. + template + DbgLoggerUtil &operator << (const T &aParam1) + { + // File may be already open so check first + if ( QIODevice::NotOpen == mFile.openMode() ) + { + /* result = */ mFile.open( + QFile::WriteOnly | QFile::Append/*Truncate*/); + } + if ( QIODevice::NotOpen != mFile.openMode() ) + { + mDbg << aParam1; + } + // In order to optimize the file is left open. + // Close it after logging args is finished. + return *this; + } + + // This closes the file, dummy parameter not used. + template + DbgLoggerUtil& operator ^ (const T &/*aParam1*/) + { + mFile.close(); // Also flushes the write buffer + return *this; + } + + private: + Q_DISABLE_COPY(DbgLoggerUtil) + QFile mFile; + QDebug mDbg; + }; + +// ^ operator used just for closing the file, 0 is a dummy parameter +#define _DBGLOG(AAA) DbgLoggerUtil() << AAA ^ 0; +#define _DBGLOG2(AAA,BBB) DbgLoggerUtil() << AAA << BBB ^ 0; +#define _DBGLOG3(AAA,BBB,CCC) DbgLoggerUtil() << AAA << BBB << CCC ^ 0; + +/*************************** + * DEBUG PORT LOGGING IMPLEMENTATION + ***************************/ +#elif _LOGGERUTIL_LOGGING_METHOD == 2 + +#define _DBGLOG(AAA) qDebug() << KDBGLOGPRE << AAA; +#define _DBGLOG2(AAA,BBB) qDebug() << KDBGLOGPRE << AAA << BBB; +#define _DBGLOG3(AAA,BBB,CCC) qDebug() << KDBGLOGPRE << AAA << BBB << CCC; + +#else // _LOGGERUTIL_LOGGING_METHOD == 0 or invalid + +/*************************** + * EMPTY MACROS LOGGING IS DISABLED + ***************************/ +#define _DBGLOG(AAA) +#define _DBGLOG2(AAA,BBB) +#define _DBGLOG3(AAA,BBB,CCC) + +#endif // _LOGGERUTIL_LOGGING_METHOD + +#endif // __LOGGERUTIL_H +// End of File