ImagePrint/ImagePrintEngine/DeviceProtocols/xhtmlfilecomposer/inc/cxfclogger.h
changeset 0 d11fb78c4374
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ImagePrint/ImagePrintEngine/DeviceProtocols/xhtmlfilecomposer/inc/cxfclogger.h	Thu Dec 17 08:45:53 2009 +0200
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2002-2007 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:  Declares logging macros
+*
+*/
+
+
+#ifndef CXFCLOGGER_H
+#define CXFCLOGGER_H
+
+#include "logdef.h"
+
+/**
+ *  @file CXFCLogger.h
+ *	@brief	Declares logging macros.
+ *
+ *  @note Link to flogger.lib in MMP file. Use DEBUGLIBRARY -keyword to avoid
+ *        warnings in release builds.\n
+ *		  @code DEBUGLIBRARY    flogger.lib @endcode
+ *
+ *  @b Usage: \n
+ *		  @code LOG("[MODULE_NAME]\t Trace text here"); @endcode
+ *
+ *          Trace target can be changed below (file logging needs directory @c c:\\logs\\upnp )\n
+ *          #define __FLOGGING__ -row uncommented (default)  = File logging \n
+ *          #define __CLOGGING__ -row uncommented            = Console logging \n
+ */
+
+
+#ifdef ENABLE_LOGGING
+// Define one of these flags:
+// FLOGGING = File logging
+// CLOGGING = Console logging
+#define __FLOGGING__
+//#define __CLOGGING__
+#endif
+
+// Then actual definitions depending on the
+// flag values.
+
+#ifdef ENABLE_LOGGING
+
+    #include <e32std.h>
+    #include <f32file.h>
+
+
+    // Actual log file name
+    _LIT(KLogFile,"CXFPLog.txt");
+
+    // Subdirectory under c:\logs -directory -- MUST EXIST.
+    _LIT(KLogDir, "upnp");
+
+	/// The format in which the time is formatted in log
+	_LIT( KLogTimeFormat, "%02d.%02d:%02d:%06d ");
+	_LIT8( KLogTimeFormat8, "%02d.%02d:%02d:%06d ");
+
+	// The length of the string produced by KLogTimeFormat
+	const TInt KLogTimeFormatLength = 16;
+
+	// How many characters a log line can contain
+	const TInt KLogLineLength = 256;
+
+
+    #include <f32file.h>
+    #include <flogger.h>
+
+
+    // Define the top level macros
+    #define LOG(a) {Print( _L(a) ) ;}
+   	#define LOG1(s, v) {Print( _L(s), v );}
+   	#define LOG2(s, v1, v2) {Print( _L(s), v1, v2 );}
+
+    #define LOG8(a) {Print8( _L8(a) );}
+   	#define LOG81(s, v) {Print8( _L8(s), v );}
+   	#define LOG82(s, v1, v2) {Print8( _L8(s), v1, v2 );}
+
+    #ifdef __FLOGGING__
+
+        inline void Print( TRefByValue<const TDesC> aText, ... )
+            {
+		    VA_LIST args;
+		    VA_START( args, aText );
+
+		    TBuf<256> buf;
+		    buf.FormatList( aText, args );
+
+			RFileLogger logger;
+			TInt ret = logger.Connect();
+			if (ret==KErrNone)
+				{
+				logger.SetDateAndTime( EFalse,EFalse );
+				logger.CreateLog( KLogDir, KLogFile, EFileLoggingModeAppend );
+				TBuf<KLogTimeFormatLength> 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();
+		    VA_END( args );
+            }
+
+        inline void Print8( TRefByValue<const TDesC8> aText, ... )
+            {
+		    VA_LIST args;
+		    VA_START( args, aText );
+
+		    TBuf8<256> buf;
+		    buf.FormatList( aText, args );
+
+			RFileLogger logger;
+			TInt ret = logger.Connect();
+			if (ret==KErrNone)
+				{
+				logger.SetDateAndTime( EFalse,EFalse );
+				logger.CreateLog( KLogDir, KLogFile, EFileLoggingModeAppend );
+				TBuf8<KLogTimeFormatLength> timeStamp;
+				TTime now;
+				now.HomeTime();
+				TDateTime dateTime;
+				dateTime = now.DateTime();
+				timeStamp.Format( KLogTimeFormat8,
+		            dateTime.Hour(), dateTime.Minute(),
+		            dateTime.Second(), dateTime.MicroSecond() );
+				buf.Insert( 0, timeStamp );
+
+				logger.Write(buf);
+				}
+
+			logger.Close();
+		    VA_END( args );
+            }
+
+    #else
+        // Console Logging on
+        #define Print RDebug::Print
+
+	    #define LOGS(a1, a2) {\
+	    	TBuf<1000> log;\
+	    	log.Append(_L(a1));\
+			log.Append(a2);\
+			Print(log );}
+
+	    #define LOG8S(a1, a2) {\
+	    	TBuf8<1000> log;\
+	    	log.Append(_L8(a1));\
+			log.Append(a2);\
+			Print(log );}
+    #endif  // __FLOGGING__
+
+#else
+
+    // DEBUG build is not on --> no logging at all
+    #define LOG(a)
+   	#define LOG1(s, v)
+   	#define LOG2(s, v1, v2)
+
+    #define LOG8(a)
+   	#define LOG81(s, v)
+   	#define LOG82(s, v1, v2)
+
+#endif  // ENABLE_LOGGING
+
+#endif  // CXFCLOGGER_H
+
+// End of File