summaryrefslogtreecommitdiff
path: root/louloulibs/logger
diff options
context:
space:
mode:
Diffstat (limited to 'louloulibs/logger')
-rw-r--r--louloulibs/logger/logger.cpp8
-rw-r--r--louloulibs/logger/logger.hpp18
2 files changed, 16 insertions, 10 deletions
diff --git a/louloulibs/logger/logger.cpp b/louloulibs/logger/logger.cpp
index 7336579..92a3d9b 100644
--- a/louloulibs/logger/logger.cpp
+++ b/louloulibs/logger/logger.cpp
@@ -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}
{
}
diff --git a/louloulibs/logger/logger.hpp b/louloulibs/logger/logger.hpp
index 0893c77..b3284a6 100644
--- a/louloulibs/logger/logger.hpp
+++ b/louloulibs/logger/logger.hpp
@@ -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)
- { }
+ public:
+ 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"