secureswitools/swisistools/source/common/logs.h
changeset 0 ba25891c3a9e
equal deleted inserted replaced
-1:000000000000 0:ba25891c3a9e
       
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * xmllogger.h
       
    16 * CXmlLogger - Used to log details to the specified log files.
       
    17 *
       
    18 */
       
    19 
       
    20 
       
    21 /**
       
    22  @file 
       
    23  @released
       
    24  @internalTechnology
       
    25 */
       
    26 
       
    27 #ifndef	LOGS_H
       
    28 #define	LOGS_H
       
    29 
       
    30 #include <ostream>
       
    31 #include <iostream>
       
    32 
       
    33 #include "exception.h"
       
    34 #include <fstream>
       
    35 #include "toolsconf.h"
       
    36 
       
    37 namespace LogDetails
       
    38 	{
       
    39 	extern std::ostream* LogStream;
       
    40 	extern int LogLevel;
       
    41 	};
       
    42 
       
    43 
       
    44 
       
    45 class CLogger
       
    46 	{
       
    47 	public:	
       
    48 		/**
       
    49 			Different types of logging levels which can be enabled.
       
    50 		 */
       
    51 		enum TLogLevel
       
    52 			{
       
    53 			ELog = 1,
       
    54 			ELogWarning = ELog << 1,
       
    55 			ELogError = ELogWarning << 1,
       
    56 			ELogEnter = ELogError << 1,
       
    57 			ELogExit = ELogEnter << 1,
       
    58 			ELogAll = ELog | ELogWarning | ELogError | ELogEnter | ELogExit,
       
    59 			};
       
    60 
       
    61 	public:
       
    62 		
       
    63 		DllExport CLogger(std::string& aLogFileName, TLogLevel aLogLevel);
       
    64 
       
    65 		DllExport ~CLogger();
       
    66 		
       
    67 		/**
       
    68 			Logs the details based on the logging parameters.
       
    69 		 */
       
    70 		DllExport void Log(const char* aMessage);
       
    71 		
       
    72 		/**
       
    73 			Logs the details based on the logging parameters.
       
    74 		 */
       
    75 		DllExport void Log(std::string& aMessage);
       
    76 		
       
    77 		/**
       
    78 			returns the stream initialized to the log file.
       
    79 		 */
       
    80 		DllExport static std::ostream& GetStream();
       
    81 
       
    82 		
       
    83 	};
       
    84 
       
    85 /**
       
    86 	Logs information of file name, logging time and line number	based on logging parameters.
       
    87  */
       
    88 #define LOGDETAILS()	CLogger::GetStream() << "\n<File>"; \
       
    89 						CLogger::GetStream() << __FILE__; \
       
    90 						CLogger::GetStream() << "\t<Line>"; \
       
    91 						CLogger::GetStream() << __LINE__ << std::ends;
       
    92 
       
    93 /**
       
    94 	Logs message in the form of a warning.
       
    95  */
       
    96 #define LOGWARN(msg)	if( CLogger::ELogWarning == CLogger::ELogWarning ) \
       
    97 						{ \
       
    98 						LOGDETAILS() \
       
    99 						CLogger::GetStream() << "\t<Warning> "; \
       
   100 						CLogger::GetStream() << msg; \
       
   101 						CLogger::GetStream().flush(); \
       
   102 						} 
       
   103 
       
   104 /**
       
   105 	Logs message in the form of an error.
       
   106  */
       
   107 #define LOGERROR(msg)	if( CLogger::ELogError == CLogger::ELogError ) \
       
   108 						{ \
       
   109 						CLogger::GetStream() << "\n<Error> "; \
       
   110 						CLogger::GetStream() << msg; \
       
   111 						CLogger::GetStream().flush(); \
       
   112 						}
       
   113 
       
   114 /**
       
   115 	Used for logging message while entering a method.
       
   116  */
       
   117 #define LOGENTER(msg)	if( CLogger::ELogEnter == CLogger::ELogEnter ) \
       
   118 						{ \
       
   119 						LOGDETAILS() \
       
   120 						CLogger::GetStream() << "\t<Enter> "; \
       
   121 						CLogger::GetStream() << msg; \
       
   122 						CLogger::GetStream().flush(); \
       
   123 						}
       
   124 
       
   125 /**
       
   126 	Used for logging message while exiting a method.
       
   127  */
       
   128 #define LOGEXIT(msg)	if( CLogger::ELogExit == CLogger::ELogExit ) \
       
   129 						{ \
       
   130 						LOGDETAILS() \
       
   131 						CLogger::GetStream() << "\t<Exit> "; \
       
   132 						CLogger::GetStream() << msg; \
       
   133 						CLogger::GetStream().flush(); \
       
   134 						}
       
   135 
       
   136 /**
       
   137 	Used for logging generic messages.
       
   138  */
       
   139 #define LOGINFO(msg)	if( CLogger::ELog == CLogger::ELog ) \
       
   140 						{ \
       
   141 						LOGDETAILS() \
       
   142 						CLogger::GetStream() << msg; \
       
   143 						CLogger::GetStream().flush(); \
       
   144 						}
       
   145 
       
   146 
       
   147 #endif	/* LOGGER_H */