#ifndef _LOG_H_
#define _LOG_H_

#include <string>
#include <map>

#ifdef VIOPSF2_REMOVED
#include <boost/filesystem.hpp>
#else
#ifndef DISABLE_LOGGING
#include <boost/filesystem.hpp>
#endif
#endif

#include "StdStream.h"
#include "Singleton.h"

#ifdef VIOPSF2_REMOVED
class CLog : public CSingleton<CLog>
{
public:
								CLog();
	virtual						~CLog();

	void						Print(const char*, const char*, ...);

private:
	typedef std::map<std::string, Framework::CStdStream> LogMapType;

	Framework::CStdStream&		GetLog(const char*);

	boost::filesystem::path		m_logBasePath;
	LogMapType					m_logs;
};

#else
#ifndef DISABLE_LOGGING
class CLog : public CSingleton<CLog>
{
public:
	CLog();
	virtual						~CLog();

	void						Print(const char*, const char*, ...);

private:
	typedef std::map<std::string, Framework::CStdStream> LogMapType;

	Framework::CStdStream&		GetLog(const char*);

	boost::filesystem::path		m_logBasePath;
	LogMapType					m_logs;
};
#else
class CLog
{
public:
	CLog();
	~CLog();
	static CLog&				GetInstance();
	void						Print(const char*, const char*, ...);
};

#endif
#endif
#endif

