mirror of https://github.com/gabime/spdlog.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
911 B
C++
41 lines
911 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;
|
|
};
|
|
} |