Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | Related Pages

logscope.h

00001 #ifndef logscope_h
00002 #define logscope_h
00003 
00004 #include "streamlog/logstream.h"
00005 
00006 namespace streamlog{
00007 
00023   class logscope{
00024 
00025   public:
00028     logscope(logstream& ls) : _ls(&ls) , _name("") , _level(-1) { }
00029     
00032     ~logscope(){
00033 
00034       if( _name.size() > 0 ) {
00035         _ls->prefix()->_name=_name ;
00036         //std::cerr << "  ~logscope()  reset name to " << _name << std::endl ;
00037         
00038       }
00039       if(  _level > -1 )
00040         _ls->setLevel( _level ) ; 
00041     }
00042     
00044     void setName(const std::string name) {
00045       _name =  _ls->prefix()->_name ;
00046       _ls->prefix()->_name = name ;
00047     }
00048   
00049 
00051     template <class T>
00052     void setLevel(){
00053       _level =  _ls->_level ;
00054       _ls->setLevel( T::level )  ;
00055     }
00056 
00061     void setLevel(const std::string& level){
00062       _level =  _ls->setLevel( level )  ;
00063     }
00064    
00065   protected: 
00066     logstream* _ls ;
00067     std::string _name ;
00068     int _level;
00069     logscope() {}
00070     
00071   };
00072 
00073 }
00074 #endif

Generated on Mon Jan 12 09:48:51 2009 for Marlin by doxygen 1.3.5