//main.cpp
#include "Logger.h"
int main(int argc, char *argv[])
{
string message1 = "logg message 1 ...";
string message2 = "logg message 2 ...";
int nNum = 10;
CLogger::getLogger()->Log("\nmessage to be logged------------------>\n");
CLogger::getLogger()->Log(message1);
CLogger::getLogger()->Log("\nmessage to be loggedi again-------------------->\n");
LOGGER->Log("\nMessage is:%s Number is:%d",message1.c_str(), nNum,"\n");//#define LOGGER CLogger::getLogger()
CLogger::getLogger()->Log("\nmessage to be loggedi again------------------------>\n");
CLogger *ptr1;
ptr1=CLogger::getLogger();
ptr1->Log("\nMessage Logged\n");
}
//logger.h
#ifndef CUSTOM_CLogger_H
#define CUSTOM_CLogger_H
#include <fstream>
#include <iostream>
#include <cstdarg>
#include <string>
using namespace std;
#define LOGGER CLogger::getLogger()
/**
* Singleton Logger Class.
*/
class CLogger
{
public:
/**
* Logs a message
* @param sMessage message to be logged.
*/
void Log(const std::string& sMessage);
/**
* Variable Length Logger function
* @param format string for the message to be logged.
*/
void Log( const char * format, ... );
/**
* << overloaded function to Logs a message
* @param sMessage message to be logged.
*/
CLogger& operator<<(const string& sMessage );
/**
* Funtion to create the instance of logger class.
* @return singleton object of Clogger class..
*/
static CLogger* getLogger();
private:
/**
* Default constructor for the Logger class.
*/
CLogger();
/**
* copy constructor for the Logger class.
*/
CLogger( const CLogger&){}; // copy constructor is private
/**
* assignment operator for the Logger class.
*/
CLogger& operator=(const CLogger& ){ return *this;}; // assignment operator is private
/**
* Log file name.
**/
static const std::string m_sFileName;
/**
* Singleton logger class object pointer.
**/
static CLogger* m_pThis;
/**
* Log file stream object.
**/
static ofstream m_Logfile;
};
#endif
//logger.cpp
#include "Logger.h"
//#include"Utilities.h"
const string CLogger::m_sFileName = "Log.txt";
CLogger* CLogger:: m_pThis = NULL;
ofstream CLogger::m_Logfile;
CLogger::CLogger()
{
}
CLogger* CLogger::getLogger(){
if(m_pThis == NULL){
m_pThis = new CLogger();
m_Logfile.open(m_sFileName.c_str(), ios::out | ios::app );
}
return m_pThis;
}
void CLogger::Log( const char * format, ... )
{
char sMessage[256];
va_list args;
va_start (args, format);
vsprintf (sMessage,format, args);
// m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
va_end (args);
}
void CLogger::Log( const string& sMessage )
{
//m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
}
CLogger& CLogger::operator<<(const string& sMessage )
{
//m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
return *this;
}
//Log.txt
message to be logged------------------>
logg message 1 ...
message to be loggedi again-------------------->
Message is:logg message 1 ... Number is:10
message to be loggedi again------------------------>
Message Logged
//Courtesy cppcodetips.wordpress.com
#include "Logger.h"
int main(int argc, char *argv[])
{
string message1 = "logg message 1 ...";
string message2 = "logg message 2 ...";
int nNum = 10;
CLogger::getLogger()->Log("\nmessage to be logged------------------>\n");
CLogger::getLogger()->Log(message1);
CLogger::getLogger()->Log("\nmessage to be loggedi again-------------------->\n");
LOGGER->Log("\nMessage is:%s Number is:%d",message1.c_str(), nNum,"\n");//#define LOGGER CLogger::getLogger()
CLogger::getLogger()->Log("\nmessage to be loggedi again------------------------>\n");
CLogger *ptr1;
ptr1=CLogger::getLogger();
ptr1->Log("\nMessage Logged\n");
}
//logger.h
#ifndef CUSTOM_CLogger_H
#define CUSTOM_CLogger_H
#include <fstream>
#include <iostream>
#include <cstdarg>
#include <string>
using namespace std;
#define LOGGER CLogger::getLogger()
/**
* Singleton Logger Class.
*/
class CLogger
{
public:
/**
* Logs a message
* @param sMessage message to be logged.
*/
void Log(const std::string& sMessage);
/**
* Variable Length Logger function
* @param format string for the message to be logged.
*/
void Log( const char * format, ... );
/**
* << overloaded function to Logs a message
* @param sMessage message to be logged.
*/
CLogger& operator<<(const string& sMessage );
/**
* Funtion to create the instance of logger class.
* @return singleton object of Clogger class..
*/
static CLogger* getLogger();
private:
/**
* Default constructor for the Logger class.
*/
CLogger();
/**
* copy constructor for the Logger class.
*/
CLogger( const CLogger&){}; // copy constructor is private
/**
* assignment operator for the Logger class.
*/
CLogger& operator=(const CLogger& ){ return *this;}; // assignment operator is private
/**
* Log file name.
**/
static const std::string m_sFileName;
/**
* Singleton logger class object pointer.
**/
static CLogger* m_pThis;
/**
* Log file stream object.
**/
static ofstream m_Logfile;
};
#endif
//logger.cpp
#include "Logger.h"
//#include"Utilities.h"
const string CLogger::m_sFileName = "Log.txt";
CLogger* CLogger:: m_pThis = NULL;
ofstream CLogger::m_Logfile;
CLogger::CLogger()
{
}
CLogger* CLogger::getLogger(){
if(m_pThis == NULL){
m_pThis = new CLogger();
m_Logfile.open(m_sFileName.c_str(), ios::out | ios::app );
}
return m_pThis;
}
void CLogger::Log( const char * format, ... )
{
char sMessage[256];
va_list args;
va_start (args, format);
vsprintf (sMessage,format, args);
// m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
va_end (args);
}
void CLogger::Log( const string& sMessage )
{
//m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
}
CLogger& CLogger::operator<<(const string& sMessage )
{
//m_Logfile <<"\n"<<Util::CurrentDateTime()<<":\t";
m_Logfile << sMessage;
return *this;
}
//Log.txt
message to be logged------------------>
logg message 1 ...
message to be loggedi again-------------------->
Message is:logg message 1 ... Number is:10
message to be loggedi again------------------------>
Message Logged
//Courtesy cppcodetips.wordpress.com
No comments:
Post a Comment