--- /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();
+ }
+