diff -r 000000000000 -r e6b17d312c8b brandingserver/group/debugtrace.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/brandingserver/group/debugtrace.h Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,162 @@ +/* +* 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: Debug Traces. +* +*/ +#ifndef __DEBUGTRACE_H__ +#define __DEBUGTRACE_H__ + +// INCLUDES +#include "e32std.h" + +// DEFINES +//Undefine: tracing disabled +//Define 1: Traces goes to file log +//Define 2: Traces goes to RDebug output +//Define 3: Trace goes both file and RDebug output +#undef TRACE_MODE +//#define TRACE_MODE 3 + + + +// ----------------------------------------------------------------------------- +// Trace definitions +// ----------------------------------------------------------------------------- +#ifdef TRACE_MODE + + // INCLUDES + #include + #include + + // CONSTANTS + _LIT( KTraceLogDir, "BS" ); + _LIT( KTraceLogFile, "BS.log" ); + + //TRACE INDIRECTION + #define T_LIT(s) _L(s) // CSI: 78 # See above + #define TRACE Trace::Emit + #define IF_TRACE_ON( aStatement ) aStatement +#endif // TRACE_MODE + + +//----------------------------------------------------------------------------- +// Empty trace definitions +//----------------------------------------------------------------------------- +#ifndef TRACE_MODE + struct TEmptyTraceString { }; + #define T_LIT(s) TEmptyTraceString() + #define IF_TRACE_ON( aStatement ) + + inline void TRACE(TEmptyTraceString){} + + template + inline void TRACE(TEmptyTraceString,T1){} + + template + inline void TRACE(TEmptyTraceString,T1,T2){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3,T4){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3,T4,T5){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3,T4,T5,T6){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3,T4,T5,T6,T7){} + + template + inline void TRACE(TEmptyTraceString,T1,T2,T3,T4,T5,T6,T7,T8){} + +#endif // TRACE_MODE + + + + +// ----------------------------------------------------------------------------- +// Trace implementation +// ----------------------------------------------------------------------------- +#ifdef TRACE_MODE + #include + #include + + // TARGET WARNING + #if !defined(_DEBUG) + + #if defined(__CW32__) + #pragma message("Trace logging on.") // CSI: 68 # See above + #else + //ARMCC warning + #endif + #endif + + namespace Trace + { + class TOverflowHandler : public TDes16Overflow + { + inline void Overflow( TDes16& /*aDes*/ ) {} + }; + + inline void Emit( TRefByValue aFmt, ... ) + { + //Format the log line + TBuf< 250 > buffer; + buffer.Append( _L("[") ); // CSI: 78 # See above + buffer.Append( RThread().Name() ); + buffer.Append( _L("] ") ); // CSI: 78 # See above + + TOverflowHandler overflowHandler; + + VA_LIST list; + VA_START( list, aFmt ); + buffer.AppendFormatList( aFmt, list, &overflowHandler ); + + TInt theTraceMode = TRACE_MODE; + + //Send trace to file + if( ( theTraceMode == 1 ) || + ( theTraceMode == 3 ) ) + { + RFileLogger logger; + if( logger.Connect() == KErrNone ) + { + logger.SetDateAndTime( EFalse, ETrue ); + logger.CreateLog( KTraceLogDir, + KTraceLogFile, + EFileLoggingModeAppend ); + + logger.Write( buffer ); + logger.CloseLog(); + logger.Close(); + } + } + + //Send trace to default debug output + if( ( theTraceMode == 2 ) || + ( theTraceMode == 3 ) ) + { + RDebug::Print( _L("%S"), &buffer ); + } + } + } +#endif //TRACE_MODE + +#endif //__DEBUGTRACE_H__ + +// END OF FILE