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
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