1
0
mirror of https://github.com/vcmi/vcmi.git synced 2026-05-16 09:28:24 +02:00

extracted base logger class to vstd

This commit is contained in:
AlexVinS
2016-08-12 15:51:14 +03:00
parent efee250e49
commit 599f4cfb55
9 changed files with 103 additions and 54 deletions
+61
View File
@@ -0,0 +1,61 @@
/*
* CLoggerBase.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
namespace ELogLevel
{
enum ELogLevel
{
NOT_SET = 0,
TRACE,
DEBUG,
INFO,
WARN,
ERROR
};
}
namespace vstd
{
class DLL_LINKAGE CLoggerBase
{
public:
virtual ~CLoggerBase(){};
virtual void log(ELogLevel::ELogLevel level, const std::string & message) const = 0;
/// Log methods for various log levels
inline void trace(const std::string & message) const
{
log(ELogLevel::TRACE, message);
};
inline void debug(const std::string & message) const
{
log(ELogLevel::DEBUG, message);
};
inline void info(const std::string & message) const
{
log(ELogLevel::INFO, message);
};
inline void warn(const std::string & message) const
{
log(ELogLevel::WARN, message);
};
inline void error(const std::string & message) const
{
log(ELogLevel::ERROR, message);
};
};
}
+26 -18
View File
@@ -28,41 +28,49 @@ namespace vstd
}
}
template<typename Logger, typename ... Args>
void logFormat(Logger * logger, ELogLevel::ELogLevel level, const std::string & format, Args ... args)
//TODO: Put into CLogger after log api extract
template<typename Logger>
void log(Logger * logger, ELogLevel::ELogLevel level, const std::string & message)
{
logger->log(level, message);
}
template<typename Logger, typename T, typename ... Args>
void log(Logger * logger, ELogLevel::ELogLevel level, const std::string & format, T t, Args ... args)
{
boost::format fmt(format);
detail::makeFormat(fmt, args...);
detail::makeFormat(fmt, t, args...);
logger->log(level, fmt.str());
}
template<typename Logger, typename ... Args>
void logErrorFormat(Logger * logger, const std::string & format, Args ... args)
template<typename Logger, typename T, typename ... Args>
void logError(Logger * logger, const std::string & format, T t, Args ... args)
{
logFormat(logger, ELogLevel::ERROR, format, args...);
log(logger, ELogLevel::ERROR, format, t, args...);
}
template<typename Logger, typename ... Args>
void logWarnFormat(Logger * logger, const std::string & format, Args ... args)
template<typename Logger, typename T, typename ... Args>
void logWarn(Logger * logger, const std::string & format, T t, Args ... args)
{
logFormat(logger, ELogLevel::WARN, format, args...);
log(logger, ELogLevel::WARN, format, t, args...);
}
template<typename Logger, typename ... Args>
void logInfoFormat(Logger * logger, const std::string & format, Args ... args)
template<typename Logger, typename T, typename ... Args>
void logInfo(Logger * logger, const std::string & format, T t, Args ... args)
{
logFormat(logger, ELogLevel::INFO, format, args...);
log(logger, ELogLevel::INFO, format, t, args...);
}
template<typename Logger, typename ... Args>
void logDebugFormat(Logger * logger, const std::string & format, Args ... args)
template<typename Logger, typename T, typename ... Args>
void logDebug(Logger * logger, const std::string & format, T t, Args ... args)
{
logFormat(logger, ELogLevel::DEBUG, format, args...);
log(logger, ELogLevel::DEBUG, format, t, args...);
}
template<typename Logger, typename ... Args>
void logTraceFormat(Logger * logger, const std::string & format, Args ... args)
template<typename Logger, typename T, typename ... Args>
void logTrace(Logger * logger, const std::string & format, T t, Args ... args)
{
logFormat(logger, ELogLevel::TRACE, format, args...);
log(logger, ELogLevel::TRACE, format, t, args...);
}
}