00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00023
00024 #ifndef BTK_IO_CACHED_LOGGER_HPP
00025 #define BTK_IO_CACHED_LOGGER_HPP
00026
00027 #include <map>
00028 #include <string>
00029
00030 #include <btk/core/io/logger.hpp>
00031
00032 namespace BTK {
00033 namespace IO {
00034 namespace LOGGING {
00035
00041 class CachedLogger : public LoggerInterface
00042 {
00043 public:
00044 CachedLogger(LoggerInterface const & previous_logger) :
00045 _previous_logger(previous_logger) {}
00046
00047 virtual ~CachedLogger() { flush(); }
00048
00052 virtual void log(std::string const & msg,
00053 LoggerLevel level) const;
00054
00055 virtual void error(std::string const & msg) const
00056 {
00057 _previous_logger.error(msg);
00058 }
00059
00063 void flush() const;
00064
00065 private:
00066 LoggerInterface const & _previous_logger;
00067 mutable std::map<std::string,LoggerLevel> _messages;
00068 };
00069
00070 }
00071 }
00072 }
00073
00074 #endif