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

logstream.h

Go to the documentation of this file.
00001 #ifndef EDG_WORKLOAD_COMMON_LOGGER_LOGSTREAM_H
00002 #define EDG_WORKLOAD_COMMON_LOGGER_LOGSTREAM_H
00003 
00004 #include <iostream>
00005 #include <string>
00006 
00007 #include "logbuf.h"
00008 
00009 COMMON_NAMESPACE_BEGIN {
00010 
00011 namespace logger {
00012 
00013 namespace threadsafe { class logstream; };
00014 
00015 class logbase_c : public std::ostream {
00016   friend class threadsafe::logstream;
00017 
00018 public:
00019   logbase_c( void );
00020   logbase_c( const char *name, level_t lev, const char *format );
00021   logbase_c( const std::string &name, level_t lev, const char *format );
00022   logbase_c( std::ostream &ostr, level_t lev, const char *format );
00023 
00024   virtual ~logbase_c( void );
00025 
00026   // Setters
00027   inline logbase_c &show_severity( bool show ) { this->lb_buffer.show_severity( show ); return *this; }
00028   inline logbase_c &next_level( level_t lev ) { this->lb_buffer.next_level( lev ); return *this; }
00029   inline logbase_c &current_level( level_t lev ) { this->lb_buffer.buffer_level( lev ); return *this; }
00030   inline logbase_c &function( const char *func ) { this->lb_buffer.function( func ); return *this; }
00031   inline logbase_c &time_format( const char *format ) { this->lb_buffer.time_format( format ); return *this; }
00032   inline logbase_c &clear_function( void ) { this->lb_buffer.clear_function(); return *this; }
00033   inline logbase_c &reset_container( DataContainerImpl *dc ) { this->lb_buffer.reset_container( dc ); return *this; }
00034 
00035   void close( void );
00036   void open( const char *name, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00037   void open( const std::string &name, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00038   void open( std::ostream &name, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00039 
00040   inline void activate_log_rotation( std::streamsize maxsize, const std::string &basename, unsigned int maxfiles )
00041   { this->lb_buffer.activate_log_rotation( maxsize, basename, maxfiles ); }
00042   inline void deactivate_log_rotation( void ) { this->lb_buffer.deactivate_log_rotation(); }
00043   inline void log_rotate( void ) { this->lb_buffer.log_rotate(); }
00044 
00045 protected:
00046   inline DataContainerImpl *container( void ) { return this->lb_buffer.container(); }
00047 
00048   mutable   Logbuf    lb_buffer;
00049 
00050 private:
00051   logbase_c &operator=( const logbase_c &lb ); // Not implemented
00052   logbase_c( const logbase_c &lb ); // Not implemented
00053 };
00054 
00055 class logstream : public logbase_c {
00056   friend class threadsafe::logstream;
00057 
00058 public:
00059   logstream( void );
00060   logstream( const char *name, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00061   logstream( const std::string &name, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00062   logstream( std::ostream &ostr, level_t lev = medium, const char *format = data_c::bd_s_timeFormat );
00063 
00064   virtual ~logstream( void );
00065 
00066   inline void reset( std::ostream &ostr, level_t lev = medium, const char *format = data_c::bd_s_timeFormat )
00067   { this->open( ostr, lev, format ); }
00068 
00069   logstream &attach_to( logstream &ls );
00070 };
00071 
00072 extern logstream cedglog;
00073 
00074 #define RenameLogStreamNS( log ) namespace log = edg::workload::common::logger
00075 
00076 }; // Namespace logger
00077 
00078 } COMMON_NAMESPACE_END;
00079 
00080 #endif /* EDG_WORKLOAD_COMMON_LOGGER_LOGSTREAM_H */
00081 
00082 // Local Variables:
00083 // mode: c++
00084 // End:

Generated on Wed Mar 1 00:37:55 2006 for COMMON API - configuration, jobid, ldif2classadi, logger, process, requestad, socket++i, task, utilities by doxygen 1.3.5