diff -r e8c1ea2c6496 -r 8758140453c0 lbs/lbstestutils/src/ctlbstestlogger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbs/lbstestutils/src/ctlbstestlogger.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,273 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// lbstestlogger.cpp +// System +// +// + +#include +#include +#include +#include + +// Component +#include "ctlbstestlogger.h" + +const TInt KLbsDevLogMaxBufSize = 256; +_LIT(KTimeFormat, "%H:%T:%S.%C"); +_LIT(KLogPath, "\\logs\\LbsTestLogs\\"); +_LIT(KLbsDevLogFolder, "LbsTestLogs"); +_LIT(KLbsDevLogFile,"lbstest.txt"); +_LIT(KLbsDevLogError, "Error: "); +_LIT(KLbsDevLogWarning, "Warning: "); +_LIT(KLbsDevLogSep," | "); +_LIT(KLbsDevLog, "LbsDevLog"); + + +const TInt KLbsHexDumpWidth=16; +_LIT(KLbsFirstFormatString,"%04x : "); +_LIT(KLbsSecondFormatString,"%02x "); +_LIT(KLbsThirdFormatString,"%c"); +_LIT(KLbsThreeSpaces," "); +_LIT(KLbsTwoSpaces," "); +const TText KLbsFullStopChar='.'; + +//----------------------------------------------------------------------------- +// LbsTestLogger +//----------------------------------------------------------------------------- + +void LbsTestLogger::CreateLogDir() + { + TInt err; + + // Create the directory + RFs fs; + err = fs.Connect(); + if(KErrNone == err) + { + err = fs.MkDirAll(KLogPath); + fs.Close(); + } + } + + +/** Static function, one parameter +@param aPrior Log entry priority +@param aFmt TDes string reference +@InternalTechnology +@prototype +*/ +void LbsTestLogger::Write(TLogType aType, TLogPriority aPrior, TRefByValue aFmt, ...) + { + RFileLogger logger; + TInt err = logger.Connect(); + + if (err == KErrNone) + { + VA_LIST list; + VA_START(list, aFmt); + TBuf16 strList; + strList.FormatList(aFmt, list); + VA_END(list); + TBuf16 txt; + + CreateLogTxt(aType, aPrior, txt); + txt.Append(strList.Left(KLbsDevLogMaxBufSize - txt.Length())); + + CreateLogDir(); + + logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend); + logger.SetDateAndTime(EFalse, EFalse); + logger.Write(txt); + + } + + logger.Close(); + } + +/** Static function to dump the hex data +@param aPrior Log entry priority +@param aPtr TUnit8 pointer to hex data +@param aLen length of hex data +@InternalTechnology +@prototype +*/ +void LbsTestLogger::HexDump(TLogPriority aPrior, const TUint8 *aPtr, TInt aLen) + { + if (aPtr==NULL) // nothing to do + return; + + RFileLogger logger; + TInt err = logger.Connect(); + CreateLogDir(); + logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend); + logger.SetDateAndTime(EFalse, EFalse); + + // based on RFileLogger + TBuf buf; + TBuf8 temp; + TInt i=0; + TBuf8 prefix; + CreateLogTxt(ELogNormal, aPrior, prefix); + + while (aLen>0) + { + TInt n=(aLen>KLbsHexDumpWidth ? KLbsHexDumpWidth : aLen); + buf.Copy(prefix); + buf.AppendFormat(KLbsFirstFormatString,i); + + TInt j; + for (j=0; j126) ? KLbsFullStopChar : aPtr[i+j]); + + logger.Write(buf); + + buf.SetLength(0); + temp.SetLength(0); + aLen-=n; + i+=n; + } + + logger.Close(); + } + +/** private function, create common log text +@param aPrior Log entry priority +@param aBuf The log prefix buffer +@InternalTechnology +@prototype +*/ +void LbsTestLogger::CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes16& aBuf) + { + TTime currentTime; + currentTime.UniversalTime(); + TBuf16<32> cTimeStr; + TInt err = KErrNone; + TRAP(err, currentTime.FormatL(cTimeStr, KTimeFormat);) + if(err) + User::Panic(KLbsDevLog, err); + + TFileName dirName = RProcess().FileName(); + TInt16 pos = dirName.LocateReverse('\\') + 1; + TPtr16 fileName = dirName.MidTPtr(pos); + TUint64 procId = RProcess().Id().Id(); + + aBuf.Append(cTimeStr); + aBuf.Append(KLbsDevLogSep); + + aBuf.Append(fileName); + aBuf.Append(KLbsDevLogSep); + + //aBuf.AppendFormat(_L16("%LX"),procId); + //aBuf.Append(KLbsDevLogSep); + + aBuf.AppendFormat(_L16("P%d"),aPrior); + aBuf.Append(KLbsDevLogSep); + + if (aType == ELogError) + { + aBuf.Append(KLbsDevLogError); + } + else if (aType == ELogWarning) + { + aBuf.Append(KLbsDevLogWarning); + } + } + + +/** Static function, one parameter +@param aPrior Log entry priority +@param aFmt Log entry +@InternalTechnology +@prototype +*/ +void LbsTestLogger::Write(TLogType aType, TLogPriority aPrior, TRefByValue aFmt, ...) + { + RFileLogger logger; + TInt err = logger.Connect(); + + if (err == KErrNone) + { + VA_LIST list; + VA_START(list, aFmt); + TBuf8 strList; + strList.FormatList(aFmt, list); + VA_END(list); + + TBuf8 txt; + CreateLogTxt(aType, aPrior, txt); + txt.Append(strList.Left(KLbsDevLogMaxBufSize - txt.Length())); + + CreateLogDir(); + logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend); + logger.SetDateAndTime(EFalse, EFalse); + logger.Write(txt); + + } + + logger.Close(); + } + +/** private function, create common log text +@param aPrior Log entry priority +@param aBuf The log prefix buffer +@InternalTechnology +@prototype +*/ +void LbsTestLogger::CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes8& aBuf) + { + TTime currentTime; + currentTime.UniversalTime(); + TBuf<32> cTimeStr; + TInt err = KErrNone; + TRAP(err, currentTime.FormatL(cTimeStr, KTimeFormat);) + if(err) + User::Panic(KLbsDevLog, err); + + TBuf8<32> cTimeStr8; + cTimeStr8.Copy(cTimeStr); + + TFileName dirName = RProcess().FileName(); + TInt pos = dirName.LocateReverse('\\') + 1; + TPtr fileName = dirName.MidTPtr(pos); + TUint64 procId = RProcess().Id().Id(); + + aBuf.Append(cTimeStr8); + aBuf.Append(KLbsDevLogSep); + + aBuf.Append(fileName); + aBuf.Append(KLbsDevLogSep); + + //aBuf.AppendFormat(_L8("%LX"),procId); + //aBuf.Append(KLbsDevLogSep); + + aBuf.AppendFormat(_L8("P%d"),aPrior); + aBuf.Append(KLbsDevLogSep); + + if (aType == ELogError) + { + aBuf.Append(KLbsDevLogError); + } + else if (aType == ELogWarning) + { + aBuf.Append(KLbsDevLogWarning); + } + }