mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
perfect forwarding for logging arguments
This commit is contained in:
parent
f9a5f4955c
commit
fee5f959fd
2
Log.cpp
2
Log.cpp
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
namespace i2p {
|
namespace i2p {
|
||||||
namespace log {
|
namespace log {
|
||||||
Log logger;
|
static Log logger;
|
||||||
/**
|
/**
|
||||||
* @brief Maps our loglevel to their symbolic name
|
* @brief Maps our loglevel to their symbolic name
|
||||||
*/
|
*/
|
||||||
|
14
Log.h
14
Log.h
@ -162,17 +162,17 @@ namespace log {
|
|||||||
|
|
||||||
/** internal usage only -- folding args array to single string */
|
/** internal usage only -- folding args array to single string */
|
||||||
template<typename TValue>
|
template<typename TValue>
|
||||||
void LogPrint (std::stringstream& s, TValue arg)
|
void LogPrint (std::stringstream& s, TValue&& arg) noexcept
|
||||||
{
|
{
|
||||||
s << arg;
|
s << std::forward<TValue>(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** internal usage only -- folding args array to single string */
|
/** internal usage only -- folding args array to single string */
|
||||||
template<typename TValue, typename... TArgs>
|
template<typename TValue, typename... TArgs>
|
||||||
void LogPrint (std::stringstream& s, TValue arg, TArgs... args)
|
void LogPrint (std::stringstream& s, TValue&& arg, TArgs&&... args) noexcept
|
||||||
{
|
{
|
||||||
LogPrint (s, arg);
|
LogPrint (s, std::forward<TValue>(arg));
|
||||||
LogPrint (s, args...);
|
LogPrint (s, std::forward<TArgs>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,7 +181,7 @@ void LogPrint (std::stringstream& s, TValue arg, TArgs... args)
|
|||||||
* @param args Array of message parts
|
* @param args Array of message parts
|
||||||
*/
|
*/
|
||||||
template<typename... TArgs>
|
template<typename... TArgs>
|
||||||
void LogPrint (LogLevel level, TArgs... args)
|
void LogPrint (LogLevel level, TArgs&&... args) noexcept
|
||||||
{
|
{
|
||||||
i2p::log::Log &log = i2p::log::Logger();
|
i2p::log::Log &log = i2p::log::Logger();
|
||||||
if (level > log.GetLogLevel ())
|
if (level > log.GetLogLevel ())
|
||||||
@ -194,7 +194,7 @@ void LogPrint (LogLevel level, TArgs... args)
|
|||||||
ss << LOG_COLOR_ERROR;
|
ss << LOG_COLOR_ERROR;
|
||||||
else if (level == eLogWarning) // if log level is WARN color log message yellow
|
else if (level == eLogWarning) // if log level is WARN color log message yellow
|
||||||
ss << LOG_COLOR_WARNING;
|
ss << LOG_COLOR_WARNING;
|
||||||
LogPrint (ss, args ...);
|
LogPrint (ss, std::forward<TArgs>(args)...);
|
||||||
|
|
||||||
// reset color
|
// reset color
|
||||||
ss << LOG_COLOR_RESET;
|
ss << LOG_COLOR_RESET;
|
||||||
|
Loading…
Reference in New Issue
Block a user