cpp_photon/include/Log.hpp
2005-11-13 07:59:48 +00:00

124 lines
3.1 KiB
C++

//This file is part of Photon (http://photon.sourceforge.net)
//Copyright (C) 2004-2005 James Turk
//
// Author:
// James Turk (jpt2433@rit.edu)
//
// Version:
// $Id: Log.hpp,v 1.9 2005/11/13 07:59:48 cozman Exp $
#ifndef PHOTON_LOG_HPP
#define PHOTON_LOG_HPP
#include <string>
#include <list>
#include <sstream>
#include "LogSink.hpp"
namespace photon
{
// Class: Log
// Log class for photon, Log passes all messages to any attached <LogSinks>,
// which can then take care of any output which is desired.
class Log
{
// Group: (Con/De)structors
public:
// Function: Log
// Log constructor, initializes a log with no sinks.
Log();
// Function: ~Log
// Log destructor, destroys log, flushing output streams/closing sinks.
~Log();
// Group: Sink Maintenance
public:
// Function: addSink
// Adds a sink to the Log, sinks are given access to all messages passed
// into the log.
//
// Parameters:
// sink - Pointer to <LogSink> to add to Log.
void addSink(LogSinkPtr sink);
// Function: removeSink
// Remove a sink from the log by name.
//
// Parameters:
// sinkName - Name of sink to remove.
void removeSink(const std::string& sinkName);
// Function: removeSink
// Remove a sink from the log.
//
// Parameters:
// sink - Pointer to sink to remove.
void removeSink(LogSinkPtr sink);
// Function: removeSinks
// Remove all sinks from log.
void removeSinks();
// Group: Stream Access
public:
// Function: note
// Accesses stream, any messages passed into note are given to associated
// <LogSinks> with a <LogLevel> of LOG_NOTE.
//
// Returns:
// Stream to pass errors to.
std::ostream& note();
// Function: verbose
// Accesses stream, any messages passed into verbose are given to
// associated <LogSinks> with a <LogLevel> of LOG_VERBOSE.
//
// Returns:
// Stream to pass errors to.
std::ostream& verbose();
// Function: warning
// Accesses stream, any messages passed into warning are given to
// associated <LogSinks> with a <LogLevel> of LOG_WARNING.
//
// Returns:
// Stream to pass errors to.
std::ostream& warning();
// Function: error
// Accesses stream, any messages passed into error are given to associated
// <LogSinks> with a <LogLevel> of LOG_ERROR.
//
// Returns:
// Stream to pass errors to.
std::ostream& error();
// Function: critical
// Accesses stream, any messages passed into critical are given to
// associated <LogSinks> with a <LogLevel> of LOG_CRITICAL.
//
// Returns:
// Stream to pass errors to.
std::ostream& critical();
// Function: flush
// Flushes the log, is generally not required. Output is handed to the
// sinks when flush is called.
void flush();
private:
std::stringstream buffer_; // buffer used for accumulating messages
LogLevel lastLevel_; // last log level, used when outputting
std::list<LogSinkPtr> sinks_; // list of attached sinks
};
}
#endif //PHOTON_LOG_HPP