wibble 0.1.28
filters.h
Go to the documentation of this file.
00001 #ifndef WIBBLE_LOG_FILTERS_H
00002 #define WIBBLE_LOG_FILTERS_H
00003 
00004 #include <wibble/log/stream.h>
00005 #include <vector>
00006 
00007 namespace wibble {
00008 namespace log {
00009 
00019 struct Timestamper : public Sender
00020 {
00021     Sender* next;
00022     std::string fmt;
00023 
00024     Timestamper(Sender* next = 0, const std::string& fmt = "%b %e %T ");
00025     virtual ~Timestamper();
00026 
00027     virtual void send(Level level, const std::string& msg);
00028 };
00029 
00033 struct LevelFilter : public log::Sender
00034 {
00035     Sender* next;
00036     log::Level minLevel;
00037 
00038     LevelFilter(Sender* next = 0, log::Level minLevel = log::INFO);
00039     virtual ~LevelFilter();
00040 
00041     virtual void send(log::Level level, const std::string& msg);
00042 };
00043 
00047 struct Tee : public log::Sender
00048 {
00049     std::vector<Sender*> next;
00050 
00051     Tee();
00052     // Shortcut to initialise with two streams
00053     Tee(Sender* first, Sender* second);
00054     ~Tee();
00055 
00056     virtual void send(log::Level level, const std::string& msg);
00057 };
00058 
00059 }
00060 }
00061 
00062 // vim:set ts=4 sw=4:
00063 #endif