homesync/group/msdebug.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:00 +0200
changeset 0 7f85d04be362
permissions -rw-r--r--
Revision: 200947 Kit: 200951

/*
* Copyright (c) 2006-2007 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:  Common trace-information file.
*
*/


#ifndef DEBUG_H
#define DEBUG_H

/**
 *  NOTE: Link to flogger.lib in MMP file. Use DEBUGLIBRARY -keyword to avoid
 *        warnings in release builds.
 *        Example:  DEBUGLIBRARY    flogger.lib
 */

/**
 * Usage: LOG(_L("[MODULE_NAME]\t Trace text here"));
 *        TRACE(Print(_L("[MODULE_NAME]\t Trace text here with parameter %d"),
 *              iCount));
 *
 *        Trace target can be changed below (file logging needs directory 
 *        c:\logs\upnp)
 *        #define __FLOGGING -row uncommented (default)  = File logging
 *        #define __CLOGGING -row uncommented            = Console logging
 */

// undefine for sure
#undef __FLOGGING__
#undef __CLOGGING__

#ifdef _DEBUG
// Define one of these flags:
// FLOGGING = File logging
// CLOGGING = Console logging
#define __FLOGGING__
//#define __CLOGGING__
#endif



// Then actual definitions depending on the 
// flag values.

#ifdef _DEBUG

    #include <e32std.h>


    // Actual log file name
    _LIT(KLogFile,"ComponentLog.txt");

    // Subdirectory under c:\logs -directory
    _LIT(KLogDir, "component");

    #include <f32file.h>
    #include <flogger.h>


    // Define the top level macros
    #define LOG(a) {Print(a);}
    #define TRACE(a) {a;}


    #ifdef __FLOGGING__

        inline void Print(const TRefByValue<const TDesC> aFmt, ...)
            {
            VA_LIST list;
            VA_START(list,aFmt);
            TBuf<32> logFile(KLogFile);
            RFileLogger::WriteFormat( KLogDir, 
                                      logFile, 
                                      EFileLoggingModeAppend, 
                                      aFmt, 
                                      list );
            }

    #else
        // Console Logging on
        #define Print RDebug::Print

    #endif  // __FLOGGING__

#else

    // DEBUG build is not on --> no logging at all
    #define LOG(a)
    #define TRACE(a)

#endif  // _DEBUG

#endif      // DEBUG_H
            
// End of File