metadataengine/server/inc/mdslogger.h
changeset 0 c53acadfccc6
child 1 acef663c1218
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/metadataengine/server/inc/mdslogger.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2005-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 class is for Server logging usage*
+*/
+
+#ifndef __MDSLOGGER_H__
+#define __MDSLOGGER_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <s32file.h>
+#include <charconv.h>
+#include <convgeneratedcpp.h>
+
+#include "flogger.h"
+#include "harvesterlog.h"
+
+class CMdsClauseBuffer;
+class RRowData;
+class TColumn;
+
+/**
+* Logging categories.
+* If adding new categories, remember to add:
+* - a new activation flag to MMP file
+* - activation flag recognition code to logger.cpp
+*/
+enum TLogCategory
+    {
+    ELogAlways      = 0x0001, // logged always (if feature is on)
+    ELogQuery       = 0x0002, // DB queries
+    ELogDb          = 0x0004, // DB interface activity
+    ELogMutex       = 0x0008, // mutex
+    ELogServer      = 0x0010, // client/server commands
+    };
+
+
+#ifdef LOG_MASTER_FLAG
+
+const TChar KNewLine = '\n';
+const TInt KLineLength = 80;
+const TInt KLineBuffer = 512;
+const TUint32 KLogfileMaxLength = 10240;
+
+_LIT(KDirectory, "Metadata");
+_LIT(KFilename, "server.txt");
+_LIT(KAltFilename, "server2.txt");
+
+#define MDE_FILE_LOGGING
+
+// CLASS DECLARATION
+/**
+* CMdSLogger.
+* Class created log for server.
+*/
+class CMdSLogger : public CBase
+    {
+    public: // Constructors and destructor
+
+	    /**
+	    * Constructs a new logger implementation.
+	    *
+	    * @return  metadata logger implementation
+	    */
+        static CMdSLogger* NewInstanceL();
+
+        virtual ~CMdSLogger();
+
+        /**
+	    * Writes text to logfile, active version
+	    */
+        void LogLit( const TDesC8& aText );
+
+        /**
+	    * Writes text to logfile, active version
+	    */
+        void LogLit( const TDesC16& aText );
+
+        /**
+        * returns a reference to the file logger resource
+        */
+        inline RFileLogger& Log();
+
+        /**
+        * tests if a logging category is active
+        */
+        inline TBool IsActive( TLogCategory aCategory );
+
+        /**
+        * activates a certain logging category
+        */
+        inline void Activate( TLogCategory aCategory );
+
+        /**
+        * deactivates a certain logging category
+        */
+        inline void Deactivate( TLogCategory aCategory );
+
+        /**
+        * Checks if size exceeds maximum limit
+        * @param aLines how many lines has been added since last update
+        */
+        void CheckSize( TInt aLines );
+
+		// used for logging
+		CMdsClauseBuffer* DescribeL( const CMdsClauseBuffer& aBuffer, const RRowData& aRowData );
+	
+		CMdsClauseBuffer* DescribeFullL( const TDesC& aBuffer, const RRowData& aRowData );
+	
+		void LogVariableL( CMdsClauseBuffer& aBuf, const TColumn& aColumn );
+
+    private: // Private constructors
+
+        /**
+        * CMdSLogger.
+        * C++ default constructor.
+        */
+        CMdSLogger();
+
+        /**
+        * ConstructL.
+        * 2nd phase constructor.
+        */
+        void ConstructL();
+
+    private:
+
+        /** the file logger resource */
+        RFileLogger iLog;
+
+        /** counter for lines */
+        TUint32 iLineCounter;
+
+        /**
+        * currently active logging categories (masked)
+        */
+        TUint32 iActiveCategories;
+        
+        TBool iAltFileFlag;
+        
+        TBool iValid;
+    };
+
+#include "mdslogger.inl"
+    
+    #define __DEFINE_LOGGER             class CMdSLogger* gLogger;
+    #define __USES_LOGGER               extern CMdSLogger* gLogger;
+    #define __INIT_LOGGER               gLogger = CMdSLogger::NewInstanceL();
+    #define __DESTROY_LOGGER            {if(gLogger){delete gLogger;gLogger=NULL;}}
+	#define __LOGLB(CATEGORY,A)         {if (gLogger->IsActive(CATEGORY)) { gLogger->LogLit( _L(A) ); }}
+	#define __LOG(CATEGORY,A)           {if (gLogger->IsActive(CATEGORY)) { gLogger->LogLit( A ); }}
+#ifdef MDE_FILE_LOGGING
+    #define __LOG1(CATEGORY,A,B)        {if (gLogger->IsActive(CATEGORY)) { gLogger->Log().WriteFormat( _L(A), B ); gLogger->CheckSize( 1 ); }}
+    #define __LOG2(CATEGORY,A,B,C)      {if (gLogger->IsActive(CATEGORY)) { gLogger->Log().WriteFormat( _L(A), B, C ); gLogger->CheckSize( 1 ); }}
+    #define __LOG3(CATEGORY,A,B,C,D)    {if (gLogger->IsActive(CATEGORY)) { gLogger->Log().WriteFormat( _L(A), B, C, D ); gLogger->CheckSize( 1 ); }}
+#else
+	#define __LOG1(CATEGORY,A,B)        {if (gLogger->IsActive(CATEGORY)) { RDebug::Print( _L(A), B ); }}
+	#define __LOG2(CATEGORY,A,B,C)      {if (gLogger->IsActive(CATEGORY)) { RDebug::Print( _L(A), B, C ); }}
+	#define __LOG3(CATEGORY,A,B,C,D)    {if (gLogger->IsActive(CATEGORY)) { RDebug::Print( _L(A), B, C, D ); }}
+#endif
+
+	#ifdef LOG_QUERY
+	    #define __LOGQUERY_16(INFO, BUFFER, ROWDATA) \
+	    	{__LOG( ELogQuery, INFO); \
+	        CMdsClauseBuffer* queryText = gLogger->DescribeFullL(BUFFER,ROWDATA); \
+	        if ( queryText ) { __LOG( ELogQuery, queryText->ConstBufferL() ); \
+	        delete queryText;} }
+	#else //LOG_QUERY
+	    #define __LOGQUERY_16(INFO, BUFFER, ROWDATA)
+	#endif //LOG_QUERY
+
+#else
+    #define __DEFINE_LOGGER 
+    #define __USES_LOGGER
+    #define __INIT_LOGGER
+    #define __DESTROY_LOGGER
+    #define __LOGLB(CATEGORY,A)
+    #define __LOG(CATEGORY,A)
+    #define __LOG1(CATEGORY,A,B)
+    #define __LOG2(CATEGORY,A,B,C)
+    #define __LOG3(CATEGORY,A,B,C,D)
+	#define __LOGQUERY_16(INFO, BUFFER, ROWDATA)
+#endif  // METADATA_LOG
+
+
+#endif  //__MDSLOGGER_H__