logger.hpp
Go to the documentation of this file.
/*
CLAW - a C++ Library Absolutely Wonderful
CLAW is a free library without any particular aim but being useful to
anyone.
Copyright (C) 2005-2011 Julien Jorge
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
contact: julien.jorge@gamned.org
*/
#ifndef __CLAW_LOGGER_HPP__
#define __CLAW_LOGGER_HPP__
#include <ostream>
#include <list>
#include <string>
#include <claw/log_level.hpp>
#include <claw/log_stream.hpp>
#ifndef CLAW_LOGGER_EXPORT
# ifdef CLAW_LOGGER_NO_EXPORT
# define CLAW_LOGGER_EXPORT
# else
# ifdef _WIN32
# ifdef claw_logger_EXPORTS
# define CLAW_LOGGER_EXPORT __declspec(dllexport)
# else
# define CLAW_LOGGER_EXPORT __declspec(dllimport)
# endif // def claw_logger_EXPORTS
# else // def _WIN32
# define CLAW_LOGGER_EXPORT
# endif // def _WIN32
# endif // def CLAW_LOGGER_NO_EXPORT
#endif // ndef CLAW_LOGGER_EXPORT
namespace claw
{
class log_system
{
public:
typedef log_stream stream_type;
typedef std::list<stream_type*> stream_list_type;
public:
CLAW_LOGGER_EXPORT log_system();
CLAW_LOGGER_EXPORT ~log_system();
CLAW_LOGGER_EXPORT void clear();
CLAW_LOGGER_EXPORT void merge( stream_type* s );
CLAW_LOGGER_EXPORT void remove( const stream_type* s );
CLAW_LOGGER_EXPORT void set( stream_type* s );
CLAW_LOGGER_EXPORT void set_level( int lvl );
CLAW_LOGGER_EXPORT void set_level( const log_level& lvl );
CLAW_LOGGER_EXPORT void flush();
template<typename T>
log_system& operator<<( const T& that );
CLAW_LOGGER_EXPORT log_system& operator<<( const log_level& that );
CLAW_LOGGER_EXPORT log_system& operator<<( log_system& (*pf)(log_system&) );
private:
int m_log_level;
int m_message_level;
stream_list_type m_stream;
}; // class log_system
CLAW_LOGGER_EXPORT extern log_system logger;
CLAW_LOGGER_EXPORT log_system& lendl(log_system& log);
} // namespace claw
namespace std
{
CLAW_LOGGER_EXPORT claw::log_system& endl( claw::log_system& log );
} // namespace std
// template methods
#include <claw/impl/logger.tpp>
#endif // __CLAW_LOGGER_HPP__
claw::log_system::set_level
CLAW_LOGGER_EXPORT void set_level(int lvl)
Change the level of log.
Definition: logger.cpp:116
claw::lendl
CLAW_LOGGER_EXPORT log_system & lendl(log_system &log)
Add a new line caracter to a logger and flush it.
Definition: logger.cpp:177
std
Definition: gif.hpp:461
log_stream.hpp
Some basic classes for logging.
claw::log_system::clear
CLAW_LOGGER_EXPORT void clear()
Delete the streams.
Definition: logger.cpp:65
claw::log_level
Set the level of the next message for logger_system::operator<<().
Definition: log_level.hpp:57
claw::log_system::merge
CLAW_LOGGER_EXPORT void merge(stream_type *s)
Add an other output stream.
Definition: logger.cpp:80
claw::log_system
A class implementing a logging system.
Definition: logger.hpp:71
log_level.hpp
A class to pass log information to the loggers.
claw::log_stream
Base class for streams accepting log output.
Definition: log_stream.hpp:59
claw::log_system::log_system
CLAW_LOGGER_EXPORT log_system()
Default constructor.
Definition: logger.cpp:46
claw::logger
log_system logger
The default log system provided by claw.
Definition: logger.cpp:37
claw
This is the main namespace.
Definition: algorithm.hpp:33
claw::log_system::flush
CLAW_LOGGER_EXPORT void flush()
Flush all log streams.
Definition: logger.cpp:135
claw::log_system::~log_system
CLAW_LOGGER_EXPORT ~log_system()
Destructor.
Definition: logger.cpp:56