diff -r 000000000000 -r 33413c0669b9 vpnengine/vpncommon/inc/logcommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vpnengine/vpncommon/inc/logcommon.h Thu Dec 17 09:14:51 2009 +0200 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2004-2008 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: Printing log messages +* +*/ + + + +#if !defined(__LOGCOMMON_H__) +#define __LOGCOMMON_H__ + +#if !defined(_DEBUG) + +#define LOG(a) +#define LOG_(a) +#define LOG_1(s, v) +#define LOG8_(a) +#define LOG8_1(s, v) +#define STACK_LEFT + +#else // _DEBUG + +#define LOG(a) a +#define LOG_(a) Log::Printf( _L(a) ) +#define LOG_1(s, v) Log::Printf( _L(s), v ) +#define LOG8_(a) Log::Printf( _L8(a) ) +#define LOG8_1(s, v) Log::Printf( _L8(s), v ) +#define STACK_LEFT { RThread __r; TThreadStackInfo __i; __r.StackInfo(__i); TInt maxSize = __i.iBase - __i.iLimit; TInt currentSize = __i.iBase - (TInt)&__r; Log::Printf( _L("Max stack size: %d, current size: %d"), maxSize, currentSize); } + +#include +_LIT(KLogFolder,"vpn"); + +class Log + { +public: + static inline void Write(const TDesC16& aDes); + static inline void Write(const TDesC8& aDes); + static inline void Printf(TRefByValue aFmt, ...); + static inline void Printf(TRefByValue aFmt, ...); + static inline void HexDump(const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen); + }; + +inline void Log::Write(const TDesC16& aDes) + { + RFileLogger logger; + if (logger.Connect() != KErrNone) + return; + logger.CreateLog(KLogFolder(), KLogFile(), EFileLoggingModeAppend); + TInt maxLen = (KLogBufferSize < 100) ? KLogBufferSize : 100; + TInt start(0); + while (start < aDes.Length()) + { + TInt length = (start + maxLen >= aDes.Length()) ? + (aDes.Length() - start) : maxLen; + TInt addLength = length; + const TDesC16 &tmp = aDes.Mid(start, length); + + TInt linefeedPos = tmp.Find(_L("\n")); + if (linefeedPos != KErrNotFound) + { + length -= (length - linefeedPos); + addLength = length + 1; // To skip linefeed + } + + logger.Write(tmp.Left(length)); + start += addLength; + } + logger.Close(); + } + +inline void Log::Write(const TDesC8& aDes) + { + RFileLogger logger; + if (logger.Connect() != KErrNone) + return; + logger.CreateLog(KLogFolder(), KLogFile(), EFileLoggingModeAppend); + TInt maxLen = (KLogBufferSize < 100) ? KLogBufferSize : 100; + TInt start(0); + while (start < aDes.Length()) + { + TInt length = (start + maxLen >= aDes.Length()) ? + (aDes.Length() - start) : maxLen; + TInt addLength = length; + const TDesC8 &tmp = aDes.Mid(start, length); + + TInt linefeedPos = tmp.Find(_L8("\n")); + if (linefeedPos != KErrNotFound) + { + length -= (length - linefeedPos); + addLength = length + 1; // To skip linefeed + } + + logger.Write(tmp.Left(length)); + start += addLength; + } + logger.Close(); + } + +inline void Log::Printf(TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + const TInt KLogTimeFormatLength = 16; + const TInt KLogLineLength = 256; + TBuf buf; + buf.FormatList( aFmt, list ); + + RFileLogger logger; + TInt ret = logger.Connect(); + if (ret==KErrNone) + { + _LIT( KLogTimeFormat, "%02d:%02d,%02d,%06d;"); + logger.SetDateAndTime( ETrue, EFalse ); + logger.CreateLog( KLogFolder(), KLogFile(), EFileLoggingModeAppend ); + TBuf timeStamp; + TTime now; + now.HomeTime(); + TDateTime dateTime; + dateTime = now.DateTime(); + timeStamp.Format( KLogTimeFormat, + dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond() ); + buf.Insert( 0, timeStamp ); + + logger.Write(buf); + } + + logger.Close(); + + //RFileLogger::WriteFormat(KLogFolder(), KLogFile(), EFileLoggingModeAppend, aFmt, list); + } + +inline void Log::Printf(TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + RFileLogger::WriteFormat(KLogFolder(), KLogFile(), EFileLoggingModeAppend, aFmt, list); + } + +inline void Log::HexDump(const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen) + { + RFileLogger::HexDump(KLogFolder(), KLogFile(), EFileLoggingModeAppend, aHeader, aMargin, aPtr, aLen); + } + + +#endif // !defined(_DEBUG) + +#endif //__LOGCOMMON_H__