~singpolyma/biboumi

e63f79169b2c031bdc1a4bb6ba8df34363e9e3c0 — louiz’ 7 years ago 0a45b09
Use an other implementation of a null_stream for the logger
2 files changed, 16 insertions(+), 10 deletions(-)

M louloulibs/logger/logger.cpp
M louloulibs/logger/logger.hpp
M louloulibs/logger/logger.cpp => louloulibs/logger/logger.cpp +6 -2
@@ 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}
{
}


M louloulibs/logger/logger.hpp => louloulibs/logger/logger.hpp +10 -8
@@ 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"