spdlog/include/c11log/log_exception.h
2014-01-25 11:09:04 +02:00

46 lines
854 B
C++

#pragma once
#include <sstream>
#include <iostream>
namespace c11log
{
class log_exception :public std::exception
{
public:
log_exception() : _oss(), _msg()
{}
virtual ~log_exception()
{}
explicit log_exception(const std::string& msg) :_oss(msg, std::ostringstream::ate), _msg(msg)
{}
log_exception(const log_exception &other) :_oss(other._oss.str()), _msg(other._msg)
{}
log_exception& operator=(const log_exception& other)
{
_oss.str(other._oss.str());
_msg = other._msg;
return *this;
}
virtual const char* what() const throw () override
{
return _msg.c_str();
}
template<typename T>
log_exception& operator<<(const T& what)
{
_oss << what;
_msg = _oss.str();
return *this;
}
private:
std::ostringstream _oss;
std::string _msg;
};
}