00001 /* 00002 * Copyright (C) 2003-2009 Olivier Boudeville 00003 * 00004 * This file is part of the Ceylan library. 00005 * 00006 * The Ceylan library is free software: you can redistribute it and/or modify 00007 * it under the terms of either the GNU Lesser General Public License or 00008 * the GNU General Public License, as they are published by the Free Software 00009 * Foundation, either version 3 of these Licenses, or (at your option) 00010 * any later version. 00011 * 00012 * The Ceylan library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License and the GNU General Public License 00016 * for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License and the GNU General Public License along with the Ceylan library. 00020 * If not, see <http://www.gnu.org/licenses/>. 00021 * 00022 * Author: Olivier Boudeville (olivier.boudeville@esperide.com) 00023 * 00024 */ 00025 00026 00027 #include "CeylanLogPlugConsole.h" 00028 00029 00030 #include "CeylanLogSource.h" // for LogSource 00031 #include "CeylanLogTransportListenerRaw.h" // for Log transports 00032 #include "CeylanLogAggregatorConsole.h" // for Log aggregators 00033 00034 #include "CeylanOperators.h" // for toString operator 00035 #include "CeylanLogLight.h" // for CEYLAN_LOG 00036 00037 00038 00039 00040 using std::string ; 00041 00042 00043 using namespace Ceylan::Log ; 00044 00045 00046 00047 void LogPlugConsole::StartService( const string & plugInitiator, 00048 bool immediateWrite, bool smart ) 00049 { 00050 00051 CEYLAN_LOG( "Starting LogPlug console service: " 00052 "creating aggregator and transport." ) ; 00053 00054 // Plug should start empty: 00055 LogPlug::CheckBlank() ; 00056 00057 00058 // Start by the end of the chain and go back to its beginning: 00059 00060 00061 /* 00062 * Other StandardStream may be LogAggregatorConsole::Output or 00063 * LogAggregatorConsole::Error. 00064 * 00065 */ 00066 LogPlug::Aggregator = new LogAggregatorConsole( 00067 /* StandardStream */ LogAggregatorConsole::Log, 00068 /* immediate Write */ immediateWrite, 00069 /* use Global Level Of Detail */ true, 00070 /* be smart */ smart ) ; 00071 00072 /* 00073 * Listener remains blank, since it is integrated with the 00074 * transport, with the console scheme. 00075 * 00076 */ 00077 00078 LogPlug::Transport = new LogTransportListenerRaw( * LogPlug::Aggregator ) ; 00079 00080 // Creates basic standard channels: 00081 LogPlug::CreateBasicPlug() ; 00082 00083 // Last check before service is open: 00084 LogPlug::StartService( plugInitiator ) ; 00085 00086 } 00087 00088 00089 00090 void LogPlugConsole::StopService() 00091 { 00092 00093 LogPlug::StopService() ; 00094 00095 CEYLAN_LOG( "Stopping transport and listener." ) ; 00096 delete LogPlug::Transport ; 00097 LogPlug::Transport = 0 ; 00098 // listener is embedded in transport. 00099 00100 CEYLAN_LOG( "Stopping aggregator." ) ; 00101 delete LogPlug::Aggregator ; 00102 LogPlug::Aggregator = 0 ; 00103 00104 } 00105 00106 00107 00108 const string LogPlugConsole::ToString( Ceylan::VerbosityLevels level ) 00109 { 00110 00111 string result = "LogSystem status: using console plug." ; 00112 00113 if ( level != Ceylan::low ) 00114 result += LogPlug::ToString( level ) ; 00115 00116 return result ; 00117 00118 } 00119 00120 00121 00122 /* 00123 00124 Not even defined: 00125 00126 LogPlugConsole::LogPlugConsole() throw( LogException ) 00127 { 00128 throw LogException( 00129 "Ceylan::Log::LogPlugConsole should not be instanciated." ) ; 00130 } 00131 00132 00133 LogPlugConsole::~LogPlugConsole() throw() 00134 { 00135 00136 } 00137 00138 */ 00139