diff -r 000000000000 -r d0791faffa3f backupandrestore/backupengine/src/sblog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backupandrestore/backupengine/src/sblog.cpp Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,157 @@ +// Copyright (c) 2004-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: +// Implementation of logging functions +// +// + +/** + @file +*/ + +#include "sblog.h" + +namespace conn + { + + namespace securebackuplog + { + #if (defined(SBE_LOGGING_DEBUG_ONLY) && defined(_DEBUG)) || defined(SBE_LOGGING_DEBUG_AND_RELEASE) + + /** The flogger directory + @internalComponent */ + _LIT(KLogDirectory,"connect"); + + /** The flogger file + @internalComponent */ + _LIT(KLogFile, "securebackup.txt"); + + /** The maximum length of text that can be logged + @internalComponent */ + const TInt KMaxLogData = 0x200; + + void __LogRaw( TDes& aData ) + /** Performs the logging operation based upon SBEngine.mmh macro configuration + @param aData The data to be logged + */ + { + #if defined(SBE_LOGGING_METHOD_FLOGGER) + RFileLogger::Write(KLogDirectory, KLogFile, EFileLoggingModeAppend, aData); + #endif + + #if defined(SBE_LOGGING_METHOD_RDEBUG) || defined(SBE_LOGGING_METHOD_UI) + + /** The logging component name + @internalComponent */ + _LIT(KLogComponentName, "[SBE] "); + + aData.Insert( 0, KLogComponentName ); + + #if defined( SBE_LOGGING_METHOD_UI ) + User::InfoPrint( aData ); + #endif + #if defined( SBE_LOGGING_METHOD_RDEBUG ) + RDebug::Print( _L("%S"), &aData ); + #endif + #endif + } + + + + + void __Log( TRefByValue aFmt, ... ) + /** Logs a message to FLOGGER and to the UI depending on + controlling macros. + + Note that FLOG macros are probably disabled in release builds, + so we might need to use something else for logging to files + + @internalComponent + @param aFmt The formatting codes + */ + { + VA_LIST list; + VA_START(list,aFmt); + + TBuf< KMaxLogData > buf; + buf.FormatList(aFmt,list); + + __LogRaw( buf ); + } + + + void __DebugDump( const TDesC& aFormat, const TUint8* aAddress, TInt aLength ) + /** Logs binary data as ASCII (hex encoded). Useful for debugging data transfer + @param aFormat The format specifier, must always include a string format identifer, i.e. %S + @param aAddress The starting memory address containing data that is to be logged + @param aLength The amount of data (in bytes) to log, starting at aAddress + */ + { + _LIT( KEndOfAddressText, ": "); + _LIT( KDoubleSpace, " " ); + _LIT( KSingleSpace, " " ); + + TInt len = aLength; + const TInt maxLen = aLength; + const TUint8* pDataAddr = aAddress; + + TBuf formatBuffer; + TBuf<81> out; + TBuf<20> ascii; + TInt offset = 0; + const TUint8* a = pDataAddr; + // + while(len>0) + { + out.Zero(); + ascii.Zero(); + out.AppendNumFixedWidth((TUint) a, EHex, 8); + out.Append( KEndOfAddressText ); + + TUint b; + for (b=0; b<16; b++) + { + TUint8 c = ' '; + if ((pDataAddr + offset + b) < pDataAddr + maxLen) + { + c = *(pDataAddr + offset + b); + out.AppendNumFixedWidth(c, EHex, 2); + } + else + { + out.Append( KDoubleSpace ); + } + + out.Append( KSingleSpace ); + + if (c<0x20 || c>=0x7f || c=='%') + c=0x2e; + + ascii.Append(TChar(c)); + } + + out.Append(ascii); + out.ZeroTerminate(); + + formatBuffer.Format( aFormat, &out ); + __LogRaw( formatBuffer ); + + a += 16; + offset += 16; + len -= 16; + } + } + + #endif + }//securebackuplog + }