Use an other implementation of a null_stream for the logger

This commit is contained in:
louiz’
2016-12-09 01:34:46 +01:00
parent 0a45b09665
commit e63f79169b
2 changed files with 16 additions and 10 deletions
+6 -2
View File
@@ -3,14 +3,18 @@
Logger::Logger(const int log_level):
log_level(log_level),
stream(std::cout.rdbuf())
stream(std::cout.rdbuf()),
null_buffer{},
null_stream{&null_buffer}
{
}
Logger::Logger(const int log_level, const std::string& log_file):
log_level(log_level),
ofstream(log_file.data(), std::ios_base::app),
stream(ofstream.rdbuf())
stream(ofstream.rdbuf()),
null_buffer{},
null_stream{&null_buffer}
{
}
+9 -7
View File
@@ -33,15 +33,15 @@
# define __FILENAME__ __FILE__
#endif
/**
* Juste a structure representing a stream doing nothing with its input.
* A buffer, used to construct an ostream that does nothing
* when we output data in it
*/
class nullstream: public std::ostream
class NullBuffer: public std::streambuf
{
public:
nullstream():
std::ostream(0)
{ }
int overflow(int c) { return c; }
};
class Logger
@@ -59,9 +59,11 @@ public:
private:
const int log_level;
std::ofstream ofstream;
nullstream null_stream;
std::ofstream ofstream{};
std::ostream stream;
NullBuffer null_buffer;
std::ostream null_stream;
};
#define WHERE __FILENAME__, ":", __LINE__, ":\t"