cpp_photon/src/LogSink.cpp

138 lines
3.2 KiB
C++
Raw Normal View History

//This file is part of Photon (http://photon.sourceforge.net)
//Copyright (C) 2004-2005 James Turk
//
// Author:
// James Turk (jpt2433@rit.edu)
//
// Version:
2005-02-07 01:48:25 +00:00
// $Id: LogSink.cpp,v 1.5 2005/02/07 01:48:27 cozman Exp $
//
// Revisions:
// $Log: LogSink.cpp,v $
2005-02-07 01:48:25 +00:00
// Revision 1.5 2005/02/07 01:48:27 cozman
// string references
//
2005-02-05 03:01:03 +00:00
// Revision 1.4 2005/02/05 03:01:04 cozman
// removed getStream() (useless)
//
// Revision 1.3 2005/02/04 08:11:54 cozman
// switched Log to shared_ptrs and added extra flushes
//
2005-01-27 05:24:11 +00:00
// Revision 1.2 2005/01/27 05:24:11 cozman
// minor documentation update
//
// Revision 1.1 2005/01/27 03:35:24 cozman
// initial import (exceptions,types, and logging,oh my!)
//
//
#include "LogSink.h"
#include <iostream>
namespace photon
{
//LogSink
2005-02-07 01:48:25 +00:00
LogSink::LogSink(const std::string& name) :
name_(name)
{
}
LogSink::~LogSink()
{
}
std::string LogSink::getName() const
{
return name_;
}
//ConsoleSink
2005-02-07 01:48:25 +00:00
ConsoleSink::ConsoleSink(const std::string& name) :
LogSink(name)
{
}
ConsoleSink::~ConsoleSink()
{
}
2005-02-07 01:48:25 +00:00
void ConsoleSink::writeMessage(LogLevel level, const std::string& msg)
{
static char* pre[] = { " NOTE: ",
" VERBOSE: ",
" WARNING: ",
" ERROR: ",
"CRITICAL: " };
std::cerr << pre[static_cast<int>(level)] << msg << std::endl;
}
//TextSink
2005-02-07 01:48:25 +00:00
TextSink::TextSink(const std::string& name) :
LogSink(name),
out_(std::string(name+".txt").c_str())
{
}
TextSink::~TextSink()
{
out_.close();
}
2005-02-07 01:48:25 +00:00
void TextSink::writeMessage(LogLevel level, const std::string& msg)
{
static char* pre[] = { " NOTE: ",
" VERBOSE: ",
" WARNING: ",
" ERROR: ",
"CRITICAL: " };
out_ << pre[static_cast<int>(level)] << msg << std::endl;
}
2005-01-27 05:24:11 +00:00
//HTMLSink
2005-02-07 01:48:25 +00:00
HTMLSink::HTMLSink(const std::string& name) :
LogSink(name),
out_(std::string(name+".html").c_str())
{
out_ << "<html><head><title>Error Log</title>\n<style type=\"text/css\">"
<< std::endl << "<!--" << std::endl
<< "p { margin: 0 }" << std::endl
<< ".note { font-style:italic color:gray }" << std::endl
<< ".verbose { font-style:italic; font-size:small }"
<< std::endl
<< ".warning { font-weight:bold; background:yellow }" << std::endl
<< ".error { font-weight:bold; background:orange }" << std::endl
<< ".critical { font-weight:bold; background:red; color:white }"
<< std::endl
<< "-->" << std::endl << "</style>" << std::endl << "</head>"
<< std::endl << "<body>" << std::endl;
}
2005-01-27 05:24:11 +00:00
HTMLSink::~HTMLSink()
{
out_ << "</body></html>" << std::endl;
out_.close();
}
2005-02-07 01:48:25 +00:00
void HTMLSink::writeMessage(LogLevel level, const std::string& msg)
{
static char* css[] = {"note","verbose","warning","error","critical"};
static char* pre[] = { " NOTE: ",
" VERBOSE: ",
" WARNING: ",
" ERROR: ",
"CRITICAL: " };
out_ << "<p class=\"" << css[static_cast<int>(level)] << "\">"
<< pre[static_cast<int>(level)] << msg << "</p>" << std::endl;
}
}