// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
#include "../mpl.hh"
#include "StreamRegistry.hh"
#include "AreaRegistry.hh"
+#include "../Exception.hh"
//#include "Target.mpp"
///////////////////////////////hh.p////////////////////////////////////////
The different object representations are:
\li The \e streams is statically represented by it's name, which is the name of a class
- defined with \ref SENF_LOG_DEF_STREAM. The dynamic representation is a string
+ defined with \ref SENF_LOG_DEFINE_STREAM. The dynamic representation is a string
representation of this name.
\li The \e area is statically represented by it's name, which again is the name of a class
- defined with \ref SENF_LOG_DEF_STREAM. The dynamic representation again is a string
+ defined with \ref SENF_LOG_DEFINE_STREAM. The dynamic representation again is a string
representation of this class's name. The dynamic representation represents an absent
area with the empty string.
\li The \e level is statically represented by a level class from \ref
The target may process in any arbitrary way: reformat, writing it into an SQL DB, whatever
can be envisioned. However, there is one important limitation: The \c v_write call must not
- block. So for more complex scenarios, additional measures must be taken (e.g. writing a log
+ block. So for more complex scenarios, additional measures must be taken (e.g. writing a %log
backend daemon which receives the messages via UDP and processes them). Of course, in rare
cases messages might be lost but this cannot be avoided.
See the class description for information on the \a
action and \a index parameters
- \param[in] Stream mandatory stream to match
- \param[in] Area optional area to match
- \param[in] Level optional level, matches messages with
+ \tparam Stream mandatory stream to match
+ \tparam Area optional area to match
+ \tparam Level optional level, matches messages with
at least the given level.
\param[in] action routing action to take
\param[in] index position of new route in the routing
found, it will be removed, otherwise the call will be
ignored
- \param[in] Stream mandatory stream to match
- \param[in] Area optional area to match
- \param[in] Level optional level, matches messages with
+ \tparam Stream mandatory stream to match
+ \tparam Area optional area to match
+ \tparam Level optional level, matches messages with
at least the given level.
\param[in] action routing action to take */
///\}
/** \brief Exception: Invalid stream */
- struct InvalidStreamException : public std::exception
- { virtual char const * what() const throw()
- { return "senf::log::Target::InvalidStreamException"; } };
+ struct InvalidStreamException : public senf::Exception
+ { InvalidStreamException()
+ : senf::Exception("senf::log::Target::InvalidStreamException"){} };
/** \brief Exception: Invalid area */
- struct InvalidAreaException : public std::exception
- { virtual char const * what() const throw()
- { return "senf::log::Target::InvalidAreaException"; } };
+ struct InvalidAreaException : public senf::Exception
+ { InvalidAreaException()
+ : senf::Exception("senf::log::Target::InvalidAreaException"){} };
iterator begin() const; ///< Iterator to beginning of routing table
iterator end() const; ///< Iterator past the end of routing table
std::string const & message) = 0;
///< Called to write out the routing message
/**< This member must be defined in the derived class to
- somehow format and write the log message.
+ somehow format and write the %log message.
- Every log message always possesses a complete set of
+ Every %log message always possesses a complete set of
meta information (\a stream, \a area and \a level).
\note This member must \e not block since it may be
virtual boost::posix_time::ptime operator()() const;
};
- /** \brief Change log message time source
+ /** \brief Change %log message time source
- Set the log message time source to \a source. The logging library will take ownership of \e
+ Set the %log message time source to \a source. The logging library will take ownership of \e
source and will take care to free it, if necessary.
Since the time source class will in almost all cases be default constructible, see the
*/
void timeSource(std::auto_ptr<TimeSource> source);
- /** \brief Change log message time source
+ /** \brief Change %log message time source
- Set the log message time source to (an instance of) \a Source. \a Source must be default
+ Set the %log message time source to (an instance of) \a Source. \a Source must be default
constructible, otherwise use the non-template senf::log::timeSource() overload.
\ingroup config