00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef _RLogChannel_incl_
00021
#define _RLogChannel_incl_
00022
00023
#include <string>
00024
#include <map>
00025
00026
#include <rlog/rlog.h>
00027
#include <rlog/RLogNode.h>
00028
00029
namespace rlog
00030 {
00031
class RLOG_DECL RLogPublisher;
00032
class RLOG_DECL RLogChannel;
00033
typedef std::map<std::string, RLogChannel*> ComponentMap;
00034
00035
00036
class RLOG_DECL RLogChannel :
public RLogNode
00037 {
00038
public:
00039 RLogChannel(
const std::string &name, LogLevel level );
00040
virtual ~RLogChannel();
00041
00042
00043
virtual void publish(
const RLogData &data);
00044
00045
00046
const std::string &name() const;
00047
00048 LogLevel logLevel() const;
00049
void setLogLevel(LogLevel level);
00050
00051 protected:
00052 friend RLogChannel *rlog::GetComponentChannel( const
char *component,
00053 const
char *path, LogLevel level );
00054 RLogChannel *getComponent(RLogChannel *componentParent,
00055 const
char *component);
00056
00057 private:
00059 std::string _name;
00060 LogLevel _level;
00061
00062 ComponentMap subChannels;
00063 ComponentMap components;
00064
00065 RLogChannel( const RLogChannel & );
00066 RLogChannel &operator = ( const RLogChannel & );
00067 };
00068
00069 }
00070
00071 #endif