#include <CeylanLogAggregator.h>
Classes | |
class | LogAggregatorException |
Exception raised by aggregators. More... | |
Public Types | |
enum | TextOutputFormat { rawText, html } |
Defines what text output formats for TextDisplayable instances are available. More... | |
Public Member Functions | |
LogAggregator (bool useGlobalLevelOfDetail=true, bool beSmart=true) | |
Constructs a LogAggregator, whose role is to transform log messages into browsable files, according to various encodings (raw, HTML, etc. | |
virtual | ~LogAggregator () throw () |
Basic virtual destructor. | |
virtual LogChannel & | createBasicChannel (const std::string &channelName) |
Creates, if possible, a new basic channel whose name is channelName. | |
virtual ObjectChannel & | createObjectChannel (LogMessage &message) |
Creates, if possible, a new object channel corresponding to the specified Loggable message. | |
virtual void | aggregate ()=0 |
Aggregates all channel and log messages informations in the implementation's fashion. | |
virtual bool | hasChannel (const std::string &channelName) const |
Tells whether this aggregator has already a channel named channelName. | |
virtual LogChannel * | findChannel (const std::string &channelName) const |
Finds, if any, a channel in LogAggregator's list of channels whose name is channelName. | |
virtual void | transferChannel (LogChannel &source, LogChannel &target) |
Transfers all the messages of source into target, updates their channel identifier so that it matches the one of target. | |
virtual void | removeChannel (LogChannel &target) |
Removes completly a log channel. | |
virtual void | store (LogMessage &message) |
Classify and stores message internally, according to the corresponding channels they contain. | |
virtual const std::string | toString (Ceylan::VerbosityLevels level=Ceylan::high) const |
Returns a user-friendly description of the state of this object. | |
Static Public Member Functions | |
static const std::string | ToString (std::list< TextDisplayable * > displayables, Ceylan::VerbosityLevels level=Ceylan::high) |
Returns a user-friendly description of this list of pointers to text displayable instances. | |
static TextOutputFormat | GetOutputFormat () |
Returns the current overall text format to be used by TextDisplayable instances. | |
static void | SetOutputFormat (TextOutputFormat newOutputFormat) |
Sets the current overall text format to be used by TextDisplayable instances. | |
Static Public Attributes | |
static const LevelOfDetail | DefaultGlobalLevelOfDetail = Ceylan::Log::DefaultLevelOfDetailForListener |
Default value for the aggregator-wide level of detail. | |
Protected Member Functions | |
virtual LogChannel * | findBasicChannel (const std::string &basicChannelName) const |
Finds, if any, a Log channel in LogAggregator's list of channels whose name is channelName. | |
virtual ObjectChannel * | findObjectChannel (const std::string &nonPrefixedChannelName) const |
Finds, if any, an Object channel in LogAggregator's list of object channels whose short name is channelName (no protocol prefix or separator allowed). | |
virtual void | createBasicChannelFrom (LogMessage &message) |
Creates a basic (non protocol-prefixed) channel from specified message, which is automatically added to this new channel. | |
virtual void | createLoggableChannelFrom (LogMessage &message) |
Creates a Loggable channel from specified message. | |
virtual void | storeBasicMessage (LogMessage &basicLogMessage) |
Classify and stores basic log message basicLogMessage internally, according to the corresponding channel it contains. | |
virtual void | storeObjectMessage (LogMessage &objectLogMessage) |
Classify and stores object log message objectLogMessage internally, according to the corresponding channel it contains. | |
virtual void | demangle (LogMessage &objectLogMessage) |
Corrects, if possible, any mangled class name in specified message. | |
virtual Ceylan::VerbosityLevels | getOverallVerbosityLevel () const |
Returns the most appropriate level of detail for log channel output, depending only on the state of the aggregator. | |
virtual Ceylan::VerbosityLevels | getMessageVerbosityLevel (const LogMessage &message) const |
Returns the most appropriate level of detail for log message output, depending on the state of the aggregator and on the message's level of detail. | |
Static Protected Member Functions | |
static Ceylan::VerbosityLevels | ConvertListenerLevelOfDetailToVerbosityLevel (LevelOfDetail level) |
Converts a level of detail of a log listener into a corresponding verbosity level. | |
static Ceylan::VerbosityLevels | ConvertMessageLevelOfDetailToVerbosityLevel (LevelOfDetail level) |
Converts a level of detail of a log message into a corresponding verbosity level. | |
Protected Attributes | |
std::list< LogChannel * > | _channelList |
List of all known Log channels. | |
bool | _beSmart |
Tells whether this aggregator should cope with mangled class names. | |
bool | _useGlobalLevelOfDetail |
Tells whether a global (aggregator-wide) level of detail for channels should be used. | |
LevelOfDetail | _globalLevelOfDetail |
Defines the aggregator-wide level of detail, used if _useGlobalLevelOfDetail is set. | |
Static Protected Attributes | |
static TextOutputFormat | _OutputFormat = rawText |
The text format to be used currently by TextDisplayable instances. | |
Private Member Functions | |
LogAggregator (const LogAggregator &source) | |
Copy constructor made private to ensure that it will be never called. | |
LogAggregator & | operator= (const LogAggregator &source) |
Assignment operator made private to ensure that it will be never called. |
For the moment, Loggable and Object messages are managed as if they were equivalent (whereas Object are specialized Loggable).
Definition at line 84 of file CeylanLogAggregator.h.
enum Ceylan::TextDisplayable::TextOutputFormat [inherited] |
Defines what text output formats for TextDisplayable instances are available.
Definition at line 124 of file CeylanTextDisplayable.h.
LogAggregator::LogAggregator | ( | bool | useGlobalLevelOfDetail = true , |
|
bool | beSmart = true | |||
) | [explicit] |
Constructs a LogAggregator, whose role is to transform log messages into browsable files, according to various encodings (raw, HTML, etc.
).
useGlobalLevelOfDetail | tells whether log channels levels of detail are to be overriden by the aggregator-wide one. | |
beSmart | tells whether this aggregator should be smart, i.e. should detect log messages whose class name is mangled, and correct that so that they are stored in the right channel. Note that instances sending logs from their destructor might prevent the smart aggregator from overcoming the mangling issue. |
Definition at line 78 of file CeylanLogAggregator.cc.
References CEYLAN_LOG.
LogAggregator::~LogAggregator | ( | ) | throw () [virtual] |
Basic virtual destructor.
Definition at line 90 of file CeylanLogAggregator.cc.
References _channelList, CEYLAN_LOG, Ceylan::low, and Ceylan::toString().
Ceylan::Log::LogAggregator::LogAggregator | ( | const LogAggregator & | source | ) | [private] |
Copy constructor made private to ensure that it will be never called.
The compiler should complain whenever this undefined constructor is called, implicitly or not.
virtual void Ceylan::Log::LogAggregator::aggregate | ( | ) | [pure virtual] |
Aggregates all channel and log messages informations in the implementation's fashion.
LogAggregatorException | if the operation fails. |
Implemented in Ceylan::Log::LogAggregatorConsole, Ceylan::Log::LogAggregatorHTML, and Ceylan::Log::LogAggregatorRaw.
Ceylan::VerbosityLevels LogAggregator::ConvertListenerLevelOfDetailToVerbosityLevel | ( | LevelOfDetail | level | ) | [static, protected] |
Converts a level of detail of a log listener into a corresponding verbosity level.
Definition at line 824 of file CeylanLogAggregator.cc.
References Ceylan::Log::DefaultLevelOfDetailForListener, Ceylan::high, Ceylan::low, Ceylan::Log::MaximumLevelOfDetailForListener, and Ceylan::medium.
Referenced by getOverallVerbosityLevel().
Ceylan::VerbosityLevels LogAggregator::ConvertMessageLevelOfDetailToVerbosityLevel | ( | LevelOfDetail | level | ) | [static, protected] |
Converts a level of detail of a log message into a corresponding verbosity level.
Definition at line 856 of file CeylanLogAggregator.cc.
References Ceylan::Log::DefaultLevelOfDetailForMessage, Ceylan::high, Ceylan::low, Ceylan::Log::MaximumLevelOfDetailForMessage, and Ceylan::medium.
Referenced by getMessageVerbosityLevel().
LogChannel & LogAggregator::createBasicChannel | ( | const std::string & | channelName | ) | [virtual] |
Creates, if possible, a new basic channel whose name is channelName.
Definition at line 120 of file CeylanLogAggregator.cc.
References _channelList, CEYLAN_LOG, and hasChannel().
Referenced by createBasicChannelFrom().
void LogAggregator::createBasicChannelFrom | ( | LogMessage & | message | ) | [protected, virtual] |
Creates a basic (non protocol-prefixed) channel from specified message, which is automatically added to this new channel.
Definition at line 397 of file CeylanLogAggregator.cc.
References Ceylan::Log::LogChannel::addMessage(), createBasicChannel(), and Ceylan::Log::LogMessage::getChannelName().
Referenced by createLoggableChannelFrom(), and storeBasicMessage().
void LogAggregator::createLoggableChannelFrom | ( | LogMessage & | message | ) | [protected, virtual] |
Creates a Loggable channel from specified message.
message | the incoming Loggable message which triggers this channel creation. |
Definition at line 413 of file CeylanLogAggregator.cc.
References _beSmart, _channelList, Ceylan::Log::ObjectChannel::addMessage(), CEYLAN_LOG, createBasicChannelFrom(), createObjectChannel(), Ceylan::Log::ObjectIdentifier::differentButMatches(), Ceylan::Log::ObjectIdentifier::generateFromChannelName(), Ceylan::Log::LogMessage::getChannelName(), Ceylan::Log::Loggable::GetEmbeddedChannelName(), Ceylan::Exception::toString(), and transferChannel().
Referenced by storeObjectMessage().
ObjectChannel & LogAggregator::createObjectChannel | ( | LogMessage & | message | ) | [virtual] |
Creates, if possible, a new object channel corresponding to the specified Loggable message.
Definition at line 142 of file CeylanLogAggregator.cc.
References _channelList, CEYLAN_LOG, Ceylan::Log::LogMessage::getChannelName(), Ceylan::Log::Loggable::GetEmbeddedChannelName(), and hasChannel().
Referenced by createLoggableChannelFrom().
void LogAggregator::demangle | ( | LogMessage & | objectLogMessage | ) | [protected, virtual] |
Corrects, if possible, any mangled class name in specified message.
Definition at line 692 of file CeylanLogAggregator.cc.
References Ceylan::demangleSymbol(), Ceylan::Log::LogMessage::getChannelName(), Ceylan::Log::ObjectIdentifier::Separator, and Ceylan::Log::LogMessage::setChannelName().
Referenced by storeObjectMessage().
LogChannel * LogAggregator::findBasicChannel | ( | const std::string & | basicChannelName | ) | const [protected, virtual] |
Finds, if any, a Log channel in LogAggregator's list of channels whose name is channelName.
Definition at line 302 of file CeylanLogAggregator.cc.
References _channelList, and CEYLAN_LOG.
Referenced by findChannel(), and storeBasicMessage().
LogChannel * LogAggregator::findChannel | ( | const std::string & | channelName | ) | const [virtual] |
Finds, if any, a channel in LogAggregator's list of channels whose name is channelName.
Definition at line 181 of file CeylanLogAggregator.cc.
References CEYLAN_LOG, findBasicChannel(), findObjectChannel(), Ceylan::Log::Loggable::GetEmbeddedChannelName(), and Ceylan::Log::Loggable::IsALoggableChannelName().
Referenced by hasChannel().
ObjectChannel * LogAggregator::findObjectChannel | ( | const std::string & | nonPrefixedChannelName | ) | const [protected, virtual] |
Finds, if any, an Object channel in LogAggregator's list of object channels whose short name is channelName (no protocol prefix or separator allowed).
Definition at line 349 of file CeylanLogAggregator.cc.
References _channelList, CEYLAN_LOG, and Ceylan::Log::LogChannel::getName().
Referenced by findChannel(), and storeObjectMessage().
Ceylan::VerbosityLevels LogAggregator::getMessageVerbosityLevel | ( | const LogMessage & | message | ) | const [protected, virtual] |
Returns the most appropriate level of detail for log message output, depending on the state of the aggregator and on the message's level of detail.
Basically, maps a global or local level of detail to a verbosity level.
Definition at line 790 of file CeylanLogAggregator.cc.
References _globalLevelOfDetail, _useGlobalLevelOfDetail, CEYLAN_LOG, ConvertMessageLevelOfDetailToVerbosityLevel(), Ceylan::Log::LogMessage::getLevelOfDetail(), and Ceylan::toString().
Referenced by Ceylan::Log::LogAggregatorRaw::write(), and Ceylan::Log::LogAggregatorConsole::write().
TextDisplayable::TextOutputFormat TextDisplayable::GetOutputFormat | ( | ) | [static, inherited] |
Returns the current overall text format to be used by TextDisplayable instances.
Definition at line 63 of file CeylanTextDisplayable.cc.
References Ceylan::TextDisplayable::_OutputFormat.
Referenced by Ceylan::formatStringList(), Ceylan::formatStringMap(), Ceylan::XML::XMLMarkup::toString(), Ceylan::Maths::Linear::Vector3::toString(), Ceylan::Maths::Linear::Vector2::toString(), Ceylan::Maths::Linear::Tripoint::toString(), Ceylan::Module::toString(), Ceylan::Maths::Linear::Matrix3::toString(), Ceylan::Maths::Linear::Matrix2::toString(), Ceylan::Maths::Linear::HomogeneousMatrix3::toString(), and Ceylan::Maths::Linear::Bipoint::toString().
Ceylan::VerbosityLevels LogAggregator::getOverallVerbosityLevel | ( | ) | const [protected, virtual] |
Returns the most appropriate level of detail for log channel output, depending only on the state of the aggregator.
Basically, maps a global or local level of detail to a verbosity level.
Definition at line 760 of file CeylanLogAggregator.cc.
References _globalLevelOfDetail, _useGlobalLevelOfDetail, CEYLAN_LOG, ConvertListenerLevelOfDetailToVerbosityLevel(), Ceylan::Log::DefaultLevelOfDetailForListener, and Ceylan::toString().
Referenced by Ceylan::Log::LogAggregatorRaw::write(), and Ceylan::Log::LogAggregatorConsole::write().
bool LogAggregator::hasChannel | ( | const std::string & | channelName | ) | const [virtual] |
Tells whether this aggregator has already a channel named channelName.
LogException | if an inconsistency is detected in channel list. |
Definition at line 171 of file CeylanLogAggregator.cc.
References findChannel().
Referenced by createBasicChannel(), and createObjectChannel().
LogAggregator& Ceylan::Log::LogAggregator::operator= | ( | const LogAggregator & | source | ) | [private] |
Assignment operator made private to ensure that it will be never called.
The compiler should complain whenever this undefined operator is called, implicitly or not.
void LogAggregator::removeChannel | ( | LogChannel & | target | ) | [virtual] |
Removes completly a log channel.
Definition at line 267 of file CeylanLogAggregator.cc.
References _channelList, CEYLAN_LOG, and Ceylan::Log::LogChannel::getName().
Referenced by transferChannel().
void TextDisplayable::SetOutputFormat | ( | TextOutputFormat | newOutputFormat | ) | [static, inherited] |
Sets the current overall text format to be used by TextDisplayable instances.
newOutputFormat | the new output format. |
Definition at line 72 of file CeylanTextDisplayable.cc.
References Ceylan::TextDisplayable::_OutputFormat.
Referenced by Ceylan::Log::LogHolder::LogHolder().
void LogAggregator::store | ( | LogMessage & | message | ) | [virtual] |
Classify and stores message internally, according to the corresponding channels they contain.
message | the log message to be stored, the aggregator takes ownership of it. |
Reimplemented in Ceylan::Log::LogAggregatorConsole, Ceylan::Log::LogAggregatorHTML, and Ceylan::Log::LogAggregatorRaw.
Definition at line 279 of file CeylanLogAggregator.cc.
References CEYLAN_LOG, Ceylan::Log::LogMessage::getChannelName(), Ceylan::Log::Loggable::IsALoggableChannelName(), storeBasicMessage(), storeObjectMessage(), and Ceylan::Log::LogMessage::toString().
Referenced by Ceylan::Log::LogListener::sendToAggregator().
void LogAggregator::storeBasicMessage | ( | LogMessage & | basicLogMessage | ) | [protected, virtual] |
Classify and stores basic log message basicLogMessage internally, according to the corresponding channel it contains.
message | the basic log message to be stored, the aggregator takes ownership of it. |
Definition at line 597 of file CeylanLogAggregator.cc.
References CEYLAN_LOG, createBasicChannelFrom(), findBasicChannel(), and Ceylan::Log::LogMessage::getChannelName().
Referenced by store().
void LogAggregator::storeObjectMessage | ( | LogMessage & | objectLogMessage | ) | [protected, virtual] |
Classify and stores object log message objectLogMessage internally, according to the corresponding channel it contains.
objectLogMessage | the object log message to be stored, the aggregator takes ownership of it. |
Definition at line 628 of file CeylanLogAggregator.cc.
References Ceylan::Log::ObjectChannel::addMessage(), CEYLAN_LOG, createLoggableChannelFrom(), demangle(), findObjectChannel(), Ceylan::Log::LogMessage::getChannelName(), Ceylan::Log::Loggable::GetEmbeddedChannelName(), and Ceylan::Log::LogMessage::setChannelName().
Referenced by store().
const std::string TextDisplayable::ToString | ( | std::list< TextDisplayable * > | displayables, | |
Ceylan::VerbosityLevels | level = Ceylan::high | |||
) | [static, inherited] |
Returns a user-friendly description of this list of pointers to text displayable instances.
displayables | a list of pointers to TextDisplayable instances/ | |
level | the requested verbosity level. |
Definition at line 45 of file CeylanTextDisplayable.cc.
References Ceylan::formatStringList().
const string LogAggregator::toString | ( | Ceylan::VerbosityLevels | level = Ceylan::high |
) | const [virtual] |
Returns a user-friendly description of the state of this object.
level | the requested verbosity level. |
Implements Ceylan::TextDisplayable.
Reimplemented in Ceylan::Log::LogAggregatorConsole, Ceylan::Log::LogAggregatorHTML, and Ceylan::Log::LogAggregatorRaw.
Definition at line 882 of file CeylanLogAggregator.cc.
References _beSmart, and _channelList.
Referenced by Ceylan::Log::LogPlug::ToString(), and Ceylan::Log::LogListener::toString().
void LogAggregator::transferChannel | ( | LogChannel & | source, | |
LogChannel & | target | |||
) | [virtual] |
Transfers all the messages of source into target, updates their channel identifier so that it matches the one of target.
This method helps correcting wrong channel names due to mangled class names.
Definition at line 204 of file CeylanLogAggregator.cc.
References Ceylan::Log::LogChannel::_messages, Ceylan::Log::LogChannel::addMessage(), CEYLAN_LOG, Ceylan::Log::LogChannel::getName(), Ceylan::low, removeChannel(), Ceylan::Log::LogMessage::setChannelName(), Ceylan::Log::LogMessage::toString(), and Ceylan::Log::LogChannel::toString().
Referenced by createLoggableChannelFrom().
bool Ceylan::Log::LogAggregator::_beSmart [protected] |
Tells whether this aggregator should cope with mangled class names.
Definition at line 417 of file CeylanLogAggregator.h.
Referenced by createLoggableChannelFrom(), toString(), Ceylan::Log::LogAggregatorConsole::~LogAggregatorConsole(), Ceylan::Log::LogAggregatorHTML::~LogAggregatorHTML(), and Ceylan::Log::LogAggregatorRaw::~LogAggregatorRaw().
std::list<LogChannel *> Ceylan::Log::LogAggregator::_channelList [protected] |
List of all known Log channels.
Definition at line 407 of file CeylanLogAggregator.h.
Referenced by Ceylan::Log::LogAggregatorRaw::aggregate(), Ceylan::Log::LogAggregatorHTML::aggregate(), Ceylan::Log::LogAggregatorConsole::aggregate(), createBasicChannel(), createLoggableChannelFrom(), createObjectChannel(), findBasicChannel(), findObjectChannel(), removeChannel(), toString(), and ~LogAggregator().
Defines the aggregator-wide level of detail, used if _useGlobalLevelOfDetail is set.
Reimplemented in Ceylan::Log::LogAggregatorConsole, and Ceylan::Log::LogAggregatorHTML.
Definition at line 435 of file CeylanLogAggregator.h.
Referenced by getMessageVerbosityLevel(), and getOverallVerbosityLevel().
TextDisplayable::TextOutputFormat TextDisplayable::_OutputFormat = rawText [static, protected, inherited] |
The text format to be used currently by TextDisplayable instances.
Definition at line 158 of file CeylanTextDisplayable.h.
Referenced by Ceylan::TextDisplayable::GetOutputFormat(), and Ceylan::TextDisplayable::SetOutputFormat().
bool Ceylan::Log::LogAggregator::_useGlobalLevelOfDetail [protected] |
Tells whether a global (aggregator-wide) level of detail for channels should be used.
Reimplemented in Ceylan::Log::LogAggregatorConsole, and Ceylan::Log::LogAggregatorHTML.
Definition at line 427 of file CeylanLogAggregator.h.
Referenced by getMessageVerbosityLevel(), getOverallVerbosityLevel(), and Ceylan::Log::LogAggregatorRaw::toString().
const LevelOfDetail LogAggregator::DefaultGlobalLevelOfDetail = Ceylan::Log::DefaultLevelOfDetailForListener [static] |
Default value for the aggregator-wide level of detail.
Reimplemented in Ceylan::Log::LogAggregatorHTML.
Definition at line 247 of file CeylanLogAggregator.h.