testexecfw/stf/stffw/logger/STFLoggingServer/src/TxtLogger.cpp
author Johnson Ma <johnson.ma@nokia.com>
Fri, 09 Apr 2010 10:46:28 +0800
changeset 2 8bb370ba6d1d
permissions -rw-r--r--
contribute STF 1.0.0

/*
 * Copyright (c) 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: This module contains implementation of CTxtLogger 
 * class member functions
 *
 */

// INCLUDE FILES
#include <e32std.h>
#include "TxtLogger.h"
#include "Output.h"
#include "LoggerTracing.h"

// EXTERNAL DATA STRUCTURES
// None

// EXTERNAL FUNCTION PROTOTYPES  
// None

// CONSTANTS
// None

// MACROS
// None

// LOCAL CONSTANTS AND MACROS
// None

// MODULE DATA STRUCTURES
// None

// LOCAL FUNCTION PROTOTYPES
// None

// FORWARD DECLARATIONS
// None

// ==================== LOCAL FUNCTIONS =======================================
// None

// ================= MEMBER FUNCTIONS =========================================

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: CTxtLogger

 Description: Default constructor

 C++ default constructor can NOT contain any code, that
 might leave.

 Parameters: COutput* output: in: Output source

 Return Values: None

 Errors/Exceptions: None

 Status: Approved

 -------------------------------------------------------------------------------
 */
CTxtLogger::CTxtLogger(COutput* output)
    {

    iOutput = output;

    }

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: ConstructL

 Description: Symbian OS second phase constructor

 Symbian OS default constructor can leave.

 Parameters: None

 Return Values: None

 Errors/Exceptions: None

 Status: Approved

 -------------------------------------------------------------------------------
 */
void CTxtLogger::ConstructL()
    {
    //Nothing to do.
    }

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: NewL

 Description: Two-phased constructor.

 Parameters: const TDesC& aTestPath: in: Log path
 const TDesC& aTestFile: in: Log filename
 TLoggerType aLoggerType: in: File type
 TOutput aOutput: in: Output source
 TBool aOverWrite: in: For file overwrite
 TBool aWithTimeStamp: in: For timestamp
 TBool aWithLineBreak: in: For line break
 TBool aWithEventRanking: in: For events ranking to file
 TBool aThreadIdToLogFile: in: Indicator to thread id adding to
 end of the log file
 TBool aCreateLogDir: in: Indicator to directory creation
 TInt  aStaticBufferSize
 TBool aUnicode: in: Indicator if file has to be in unicode format

 Return Values: CTxtLogger*: pointer to CTxtLogger object

 Errors/Exceptions: Leaves if called COutput::NewL method fails

 Status: Proposal

 -------------------------------------------------------------------------------
 */
CTxtLogger* CTxtLogger::NewL(const TDesC& aTestPath, const TDesC& aTestFile,
        CStifLogger::TLoggerType aLoggerType, CStifLogger::TOutput aOutput,
        TBool aOverWrite, TBool aWithTimeStamp, TBool aWithLineBreak,
        TBool aWithEventRanking, TBool aThreadIdToLogFile,
        TBool aCreateLogDir, TInt aStaticBufferSize, TBool aUnicode, TInt aThreadId)
    {
    __TRACE( KInfo, ( _L( "STIFLOGGER: Creating txt logger" ) ) );

    // Create COutput object output
    COutput* output = COutput::NewL(aTestPath, aTestFile, aLoggerType,
            aOutput, aOverWrite, aWithTimeStamp, aWithLineBreak,
            aWithEventRanking, aThreadIdToLogFile, aCreateLogDir,
            aStaticBufferSize, aUnicode, aThreadId);

    CleanupStack::PushL(output);
    __ASSERT_ALWAYS( output != NULL, User::Leave( KErrNotFound ) );
    // Create CTxtLogger object txtLogger and bind to COutput
    CTxtLogger* txtLogger = new (ELeave) CTxtLogger(output);
    // TXT logger owns output object and it will be destroyed in STIFLogger
    // destructor.
    CleanupStack::Pop(output);

    CleanupStack::PushL(txtLogger);
    txtLogger->ConstructL();
    CleanupStack::Pop(txtLogger);

    return txtLogger;

    }

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: ~CTxtLogger

 Description: Destructor

 Parameters: None

 Return Values: None

 Errors/Exceptions: None

 Status: Approved

 -------------------------------------------------------------------------------
 */
CTxtLogger::~CTxtLogger()
    {
    }

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: Send

 Description: Send style information and 16 bit data to the output module.

 Parameters: TInt TStyle: in: Text forming
 const TDesC& aData: in: Data to be logged

 Return Values: TInt: Symbian error code.

 Errors/Exceptions: None

 Status: Approved

 -------------------------------------------------------------------------------
 */
TInt CTxtLogger::Send(TInt aStyle, const TDesC& aData)
    {
    // Time stamp indicator
    TBool timestamp(ETrue);
    // Event ranking indicator
    TBool eventranking(ETrue);

    // Only EError, EWarning and EImportant styles are supporter in txt logging
    if (0x00100 <= aStyle) // EError, 0x00100 => 256
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L( "ERROR    " ));
        aStyle -= 0x00100;
        timestamp = EFalse; // Time stamp added no time stamp to the
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }
    if (0x00080 <= aStyle) // EWarning, 0x00080 => 128
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L( "WARNING    " ));
        aStyle -= 0x00080;
        timestamp = EFalse; // Time stamp added no time stamp to the 
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }
    if (0x00040 <= aStyle) // EImportant, 0x00040 => 64
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L( "IMPORTANT    " ));
        aStyle -= 0x00040;
        timestamp = EFalse; // Time stamp added no time stamp to the 
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }

    return iOutput->Write(timestamp, ETrue, eventranking, aData);

    }

/*
 -------------------------------------------------------------------------------

 Class: CTxtLogger

 Method: Send

 Description: Send style information and 8 bit data to the output module.

 Parameters: TInt TStyle: in: Text forming
 const TDesC8& aData: in: Data to be logged

 Return Values: TInt: Symbian error code.

 Errors/Exceptions: None

 Status: Approved

 -------------------------------------------------------------------------------
 */
TInt CTxtLogger::Send(TInt aStyle, const TDesC8& aData)
    {
    // Time stamp indicator
    TBool timestamp(ETrue);
    // Event ranking indicator
    TBool eventranking(ETrue);

    // Only EError, EWarning and EImportant styles are supporter in txt logging
    if (0x00100 <= aStyle) // EError, 0x00100 => 256
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L8( "ERROR    " ));
        aStyle -= 0x00100;
        timestamp = EFalse; // Time stamp added no time stamp to the
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }
    if (0x00080 <= aStyle) // EWarning, 0x00080 => 128
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L8( "WARNING    " ));
        aStyle -= 0x00080;
        timestamp = EFalse; // Time stamp added no time stamp to the 
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }
    if (0x00040 <= aStyle) // EImportant, 0x00040 => 64
        {
        iOutput->Write(timestamp, EFalse, eventranking, _L8( "IMPORTANT    " ));
        aStyle -= 0x00040;
        timestamp = EFalse; // Time stamp added no time stamp to the 
        // forward operations
        eventranking = EFalse; // Event ranking added no event ranking to the
        // forward operations
        }

    return iOutput->Write(timestamp, ETrue, eventranking, aData);

    }

// ================= OTHER EXPORTED FUNCTIONS =================================
// None

// End of File