searchengine/util/qautils/src/clog.cpp
changeset 0 671dee74050a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchengine/util/qautils/src/clog.cpp	Mon Apr 19 14:40:16 2010 +0300
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+#include "CLog.h"
+
+#include <s32file.h>
+#include <e32cons.h>
+#include <utf.h>
+
+void MLog::LogL( TRefByValue<const TDesC> aFormat, ... ) 
+	{
+	VA_LIST args;
+	VA_START( args, aFormat );  
+	VLogL( aFormat, args ); 
+	VA_END( args );  
+	}
+
+CFileConsoleLog::CFileConsoleLog( CConsoleBase* aConsole )
+: 	iConsole( aConsole ), 
+	iFile( NULL ),
+	iFs( 0 )
+	{
+	}
+
+void CFileConsoleLog::ConstructL( RFs& aFs, const TDesC& aFile ) 
+	{
+	aFs.MkDirAll( aFile );  // Prepare necessary paths
+	aFs.Delete( aFile );  // Kill the old file
+	iFile = new RFile(); 
+	User::LeaveIfError( iFile->Create( aFs, aFile, EFileWrite|EFileStreamText ) != KErrNone );
+	}
+
+void CFileConsoleLog::ConstructL( const TDesC& aFile ) 
+	{
+	iFs = new RFs(); 
+	User::LeaveIfError( iFs->Connect() ); 
+	ConstructL( *iFs, aFile ); 
+	}
+
+CFileConsoleLog::~CFileConsoleLog()
+	{
+	if ( iFile ) 
+		{
+		iFile->Close(); 
+		delete iFile; 
+		}
+	if ( iFs ) 
+		{
+		iFs->Close(); 
+		delete iFs; 
+		}
+	}
+
+CFileConsoleLog* CFileConsoleLog::NewL( CConsoleBase* aConsole,
+										const TDesC& aFile )
+	{
+	CFileConsoleLog* self = new ( ELeave ) CFileConsoleLog( aConsole ); 
+	CleanupStack::PushL( self ); 
+	self->ConstructL( aFile ); 
+	CleanupStack::Pop( self ); 
+	return self;
+	}
+
+		
+void CFileConsoleLog::VLogL( const TDesC& aFormat, VA_LIST aArgs )
+	{
+	HBufC* buf = HBufC::NewLC( 2048 ); 
+	buf->Des().FormatList( aFormat, aArgs ); 
+	buf->Des().Append( _L( "\n" ) ); 
+	
+	if ( iConsole ) 
+		{
+		iConsole->Write( *buf ); 
+		}
+    HBufC8* buf8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( *buf );
+	iFile->Write( *buf8 );
+	delete buf8;  
+	CleanupStack::PopAndDestroy( buf ); 
+	}
+
+void CFileConsoleLog::FlushL()
+	{
+	if ( iConsole ) 
+		{
+		// nothing needs to be done? 
+		}
+	if ( iFile ) 
+		{
+		iFile->Flush();
+		}
+	}
+
+TShortTimeStampLog::TShortTimeStampLog()
+:	iLog( 0 ) {}
+
+TShortTimeStampLog::TShortTimeStampLog( MLog& aLog )
+:	iLog( &aLog ) 
+	{
+	}
+
+void TShortTimeStampLog::SetLog( MLog& aLog ) 
+	{
+	iLog = &aLog;
+	}
+
+void TShortTimeStampLog::VLogL( const TDesC& aDesc, VA_LIST aArgs )
+	{
+	HBufC* buf = HBufC::NewLC( aDesc.Length() + 64 ); 
+	TTime homeTime; 
+	homeTime.HomeTime();
+	TDateTime time = homeTime.DateTime();
+	
+	buf->Des().AppendNumFixedWidth( (TUint)time.Hour(), EDecimal, 2 );
+	buf->Des().Append( _L(":") ); 
+	buf->Des().AppendNumFixedWidth( (TUint)time.Minute(), EDecimal, 2 );
+	buf->Des().Append( _L(" : ") );
+	buf->Des().Append( aDesc ); 
+	iLog->VLogL( *buf, aArgs ); 
+	CleanupStack::PopAndDestroy( buf ); 
+	}
+
+void TShortTimeStampLog::FlushL()
+	{
+	iLog->FlushL();
+	}
+