diff -r 417699dc19c9 -r c7e9f1c97567 xml/legacyminidomparser/xmlparser/test/t_XMLParserLOG.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/legacyminidomparser/xmlparser/test/t_XMLParserLOG.CPP Mon Sep 13 13:16:40 2010 +0530 @@ -0,0 +1,190 @@ +// 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: +// + +#ifdef _DEBUG +#undef _MSG_NO_LOGGING +#endif + +#include "t_XMLParserLOG.H" + + +CImLog::CImLog() + { + __DECLARE_NAME(_S("CImLog")); + } + +// +// NewL - user describes full file path and file name for the log file +// +CImLog *CImLog::NewL(const TDesC& aFullFilePath, TImLogOpenMode aImLogOpenMode) + { + CImLog* self = new (ELeave) CImLog(); + CleanupStack::PushL(self); + self->ConstructL(aFullFilePath,aImLogOpenMode); + CleanupStack::Pop(); + return self; + } + +// +// 2nd phase of construction +// +#ifndef _MSG_NO_LOGGING +void CImLog::ConstructL(const TDesC& aFullFilePath, TImLogOpenMode aImLogOpenMode) +#else +void CImLog::ConstructL(const TDesC& /*aFullFilePath*/, TImLogOpenMode /*aImLogOpenMode*/) +#endif + { +#ifndef _MSG_NO_LOGGING + + User::LeaveIfError(iFs.Connect()); + TFileName logFile; + logFile.Append(aFullFilePath); + + if (aImLogOpenMode==EAppend) + { + TInt err=iFile.Open(iFs,logFile,EFileWrite|EFileShareAny); + if (err==KErrNotFound) + { + iFile.Create(iFs,logFile,EFileWrite|EFileShareAny); + } + else if (err != KErrNone) + { + User::Leave(err); + } + TInt position=1; + User::LeaveIfError(iFile.Seek(ESeekEnd,position)); + } + else + { + // If the log directory has not been created, no log will be created. OK + User::LeaveIfError(iFile.Replace(iFs,logFile,EFileWrite|EFileShareAny)); + } + +#endif // _MSG_NO_LOGGING + } + +CImLog::~CImLog() + { +#ifndef _MSG_NO_LOGGING + + iFile.Close(); + iFs.Close(); + +#endif // _MSG_NO_LOGGING + } + +// +// Log an error message +// +#ifndef _MSG_NO_LOGGING +void CImLog::AppendError(const TDesC8& aErrorMessage, TInt aErrorCode) +#else +void CImLog::AppendError(const TDesC8& /*aErrorMessage*/, TInt /*aErrorCode*/) +#endif + { +#ifndef _MSG_NO_LOGGING + WriteToLog(KLogErrorString, &aErrorMessage, aErrorCode); +#endif + } + +// +// Log a comment +// +#ifndef _MSG_NO_LOGGING +void CImLog::AppendComment(const TDesC8& aMessage) +#else +void CImLog::AppendComment(const TDesC8& /*aMessage*/) +#endif + { +#ifndef _MSG_NO_LOGGING + WriteToLog(KLogCommentString, &aMessage); +#endif + } + +// +// Construct a string with date, a message type indicator (out, in, error) sort out formatting +// +#ifndef _MSG_NO_LOGGING +void CImLog::BuildLogString(const TDesC8& aFormat,const TDesC8& aOutPut, TBool aWriteCrLf) +#else +void CImLog::BuildLogString(const TDesC8& /*aFormat*/,const TDesC8& /*aOutPut*/, TBool /*aWriteCrLf*/) +#endif + { +#ifndef _MSG_NO_LOGGING + + TPtrC8 logString(aOutPut); + + for(;;) + { + TInt crLfPos=logString.Find(KLogCR); + if(crLfPos==KErrNotFound) + { + break; + } + else + { + TPtrC8 line; + if (aWriteCrLf && (crLfPos == logString.Size() - 2)) + { + line.Set(logString); + } + else + { + line.Set(logString.Left(crLfPos)); + } + WriteToLog(TRefByValue(aFormat),&line); + logString.Set(logString.Mid(crLfPos+2)); + } + } + + if(logString.Length()) + { + WriteToLog(TRefByValue(aFormat),&logString); + } + +#endif // _MSG_NO_LOGGING + } + +// +// Write information to the log file +// +#ifndef _MSG_NO_LOGGING +void CImLog::WriteToLog(TRefByValue aFmt,...) +#else +void CImLog::WriteToLog(TRefByValue /*aFmt*/,...) +#endif + { +#ifndef _MSG_NO_LOGGING + + TBuf8<1024> buf; + TTime date; + date.HomeTime(); + TBuf<18> dateString; + TRAPD(error, date.FormatL(dateString,(KLogDateFormatString))); + if(error) + { + dateString.Copy(_L("Invalid Date")); + } + buf.Copy(dateString); + + VA_LIST list; + VA_START(list,aFmt); + + buf.AppendFormatList(aFmt,list); + buf.Append(KLogCR); + iFile.Write(buf); + +#endif // _MSG_NO_LOGGING + }