Commit 2c07f42b authored by Pavel Vainerman's avatar Pavel Vainerman

(codegen): Встроил LogServer в генерируемый класс.

parent 51f45a5c
...@@ -244,7 +244,7 @@ ...@@ -244,7 +244,7 @@
<xsl:template name="COMMON-HEAD-PROTECTED"> <xsl:template name="COMMON-HEAD-PROTECTED">
virtual void callback() override; virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override; virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override; virtual void sysCommand( const UniSetTypes::SystemMessage* sm ){};
virtual void askSensors( UniversalIO::UIOCommand cmd ){} virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{} virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{} virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
...@@ -260,6 +260,7 @@ ...@@ -260,6 +260,7 @@
void preAskSensors( UniversalIO::UIOCommand cmd ); void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( const UniSetTypes::SensorMessage* sm ); void preSensorInfo( const UniSetTypes::SensorMessage* sm );
void preTimerInfo( const UniSetTypes::TimerMessage* tm ); void preTimerInfo( const UniSetTypes::TimerMessage* tm );
void preSysCommand( const UniSetTypes::SystemMessage* sm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId ); void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg(); void resetMsg();
...@@ -302,6 +303,12 @@ ...@@ -302,6 +303,12 @@
IOController_i::SensorInfo si; IOController_i::SensorInfo si;
bool forceOut; /*!&lt; флаг принудительного обноления "выходов" */ bool forceOut; /*!&lt; флаг принудительного обноления "выходов" */
std::shared_ptr&lt;LogAgregator&gt; loga;
std::shared_ptr&lt;DebugStream&gt; smlog;
std::shared_ptr&lt;LogServer&gt; logserv;
std::string logserv_host = {""};
int logserv_port = {0};
</xsl:template> </xsl:template>
<xsl:template name="COMMON-HEAD-PRIVATE"> <xsl:template name="COMMON-HEAD-PRIVATE">
...@@ -330,7 +337,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi ...@@ -330,7 +337,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi
break; break;
case Message::SysCommand: case Message::SysCommand:
sysCommand( reinterpret_cast&lt;SystemMessage*&gt;(_msg) ); preSysCommand( reinterpret_cast&lt;SystemMessage*&gt;(_msg) );
break; break;
default: default:
...@@ -343,19 +350,25 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi ...@@ -343,19 +350,25 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( const SystemMessage* _sm ) void <xsl:value-of select="$CLASSNAME"/>_SK::preSysCommand( const SystemMessage* _sm )
{ {
switch( _sm->command ) switch( _sm->command )
{ {
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
ulogany &lt;&lt; myname &lt;&lt; "(sysCommand): WatchDog" &lt;&lt; endl; ulogany &lt;&lt; myname &lt;&lt; "(preSysCommand): WatchDog" &lt;&lt; endl;
if( !active || !ptStartUpTimeout.checkTime() ) if( !active || !ptStartUpTimeout.checkTime() )
{ {
uwarn &lt;&lt; myname &lt;&lt; "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl; uwarn &lt;&lt; myname &lt;&lt; "(preSysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl;
break; break;
} }
case SystemMessage::StartUp: case SystemMessage::StartUp:
{ {
if( !logserv_host.empty() &amp;&amp; logserv_port != 0 &amp;&amp; !logserv-&gt;isRunning() )
{
myinfo &lt;&lt; myname &lt;&lt; "(preSysCommand): run log server " &lt;&lt; logserv_host &lt;&lt; ":" &lt;&lt; logserv_port &lt;&lt; endl;
logserv-&gt;run(logserv_host, logserv_port, true);
}
waitSM(smReadyTimeout); waitSM(smReadyTimeout);
ptStartUpTimeout.reset(); ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность! // т.к. для io-переменных важно соблюдать последовательность!
...@@ -377,12 +390,12 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( const SystemMessage* _s ...@@ -377,12 +390,12 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( const SystemMessage* _s
case SystemMessage::LogRotate: case SystemMessage::LogRotate:
{ {
// переоткрываем логи // переоткрываем логи
mylogany &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl; mylogany &lt;&lt; myname &lt;&lt; "(preSysCommand): logRotate" &lt;&lt; endl;
string fname( mylog->getLogFile() ); string fname( mylog->getLogFile() );
if( !fname.empty() ) if( !fname.empty() )
{ {
mylog->logFile(fname.c_str(),true); mylog->logFile(fname.c_str(),true);
mylogany &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** mylog LOG ROTATE *****************" &lt;&lt; endl; mylogany &lt;&lt; myname &lt;&lt; "(preSysCommand): ***************** mylog LOG ROTATE *****************" &lt;&lt; endl;
} }
} }
break; break;
...@@ -390,6 +403,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( const SystemMessage* _s ...@@ -390,6 +403,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( const SystemMessage* _s
default: default:
break; break;
} }
sysCommand(_sm);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<xsl:if test="normalize-space($TESTMODE)!=''"> <xsl:if test="normalize-space($TESTMODE)!=''">
...@@ -410,7 +425,7 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::activateObject() ...@@ -410,7 +425,7 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::activateObject()
{ {
// блокирование обработки Startup // блокирование обработки Startup
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. preSysCommand()
{ {
activated = false; activated = false;
<xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>::activateObject();</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>::activateObject();</xsl:if>
...@@ -550,6 +565,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -550,6 +565,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
#include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Exceptions.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Exceptions.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>ORepHelpers.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>ORepHelpers.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogServer.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>DebugStream.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogAgregator.h<xsl:call-template name="postinclude"/>
#include "<xsl:value-of select="$SK_H_FILENAME"/>" #include "<xsl:value-of select="$SK_H_FILENAME"/>"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -690,6 +708,13 @@ end_private(false) ...@@ -690,6 +708,13 @@ end_private(false)
conf->initLogStream(mylog,s.str()); conf->initLogStream(mylog,s.str());
} }
loga = make_shared&lt;LogAgregator&gt;();
loga-&gt;add(mylog);
loga-&gt;add(ulog());
logserv = make_shared&lt;LogServer&gt;(loga);
logserv-&gt;init( argprefix + "-logserver", confnode );
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
...@@ -726,6 +751,13 @@ end_private(false) ...@@ -726,6 +751,13 @@ end_private(false)
UniXML::iterator it(cnode); UniXML::iterator it(cnode);
// ------- init logserver ---
if( findArgParam("--" + argprefix + "-run-logserver", conf-&gt;getArgc(), conf-&gt;getArgv()) != -1 )
{
logserv_host = conf-&gt;getArg2Param("--" + argprefix + "-logserver-host", it.getProp("logserverHost"), "localhost");
logserv_port = conf-&gt;getArgPInt("--" + argprefix + "-logserver-port", it.getProp("logserverPort"), getId());
}
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false); forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id")); string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
...@@ -1066,9 +1098,15 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000)) ...@@ -1066,9 +1098,15 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000))
s &lt;&lt; argprefix &lt;&lt; "log"; s &lt;&lt; argprefix &lt;&lt; "log";
conf->initLogStream(mylog, s.str()); conf->initLogStream(mylog, s.str());
} }
si.node = conf->getLocalNode();
loga = make_shared&lt;LogAgregator&gt;();
loga-&gt;add(mylog);
loga-&gt;add(ulog());
logserv = make_shared&lt;LogServer&gt;(loga);
logserv-&gt;init( argprefix + "-logserver", confnode );
si.node = conf->getLocalNode();
<xsl:for-each select="//sensors/item"> <xsl:for-each select="//sensors/item">
<xsl:call-template name="setmsg"> <xsl:call-template name="setmsg">
...@@ -1078,6 +1116,13 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000)) ...@@ -1078,6 +1116,13 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000))
UniXML::iterator it(cnode); UniXML::iterator it(cnode);
// ------- init logserver ---
if( findArgParam("--" + argprefix + "-run-logserver", conf-&gt;getArgc(), conf-&gt;getArgv()) != -1 )
{
logserv_host = conf-&gt;getArg2Param("--" + argprefix + "-logserver-host", it.getProp("logserverHost"), "localhost");
logserv_port = conf-&gt;getArgPInt("--" + argprefix + "-logserver-port", it.getProp("logserverPort"), getId());
}
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false); forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id")); string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
......
...@@ -44,6 +44,9 @@ ...@@ -44,6 +44,9 @@
#include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>UInterface.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UInterface.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogServer.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>DebugStream.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogAgregator.h<xsl:call-template name="postinclude"/>
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
class <xsl:value-of select="$CLASSNAME"/>_SK: class <xsl:value-of select="$CLASSNAME"/>_SK:
<xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if>
......
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
#include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>DebugStream.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>DebugStream.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogServer.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>LogAgregator.h<xsl:call-template name="postinclude"/>
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
class <xsl:value-of select="$CLASSNAME"/>_SK: class <xsl:value-of select="$CLASSNAME"/>_SK:
<xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if>
......
...@@ -18,13 +18,13 @@ void TestGenAlone::step() ...@@ -18,13 +18,13 @@ void TestGenAlone::step()
cout << strval(in_input2_s) << endl; cout << strval(in_input2_s) << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void TestGenAlone::sensorInfo( SensorMessage* sm ) void TestGenAlone::sensorInfo( const SensorMessage* sm )
{ {
if( sm->id == input1_s ) if( sm->id == input1_s )
out_output1_c = in_input1_s; // sm->state out_output1_c = in_input1_s; // sm->state
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void TestGenAlone::timerInfo( TimerMessage* tm ) void TestGenAlone::timerInfo( const TimerMessage* tm )
{ {
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -13,10 +13,10 @@ class TestGenAlone: ...@@ -13,10 +13,10 @@ class TestGenAlone:
protected: protected:
virtual void step(); virtual void step() override;
void sensorInfo( UniSetTypes::SensorMessage* sm ); void sensorInfo( const UniSetTypes::SensorMessage* sm ) override;
void timerInfo( UniSetTypes::TimerMessage* tm ); void timerInfo( const UniSetTypes::TimerMessage* tm ) override;
virtual void sigterm( int signo ); virtual void sigterm( int signo ) override;
private: private:
}; };
......
...@@ -446,7 +446,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -446,7 +446,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
%changelog %changelog
* Sun May 24 2015 Pavel Vainerman <pv@altlinux.ru> 2.0-alt35 * Sun May 24 2015 Pavel Vainerman <pv@altlinux.ru> 2.0-alt35
- add supported LogServer for: SharedMemory,RRDServer,MBTCPMaster,MBSlave,UNetExchange,IOControl - add supported LogServer for:
SharedMemory,RRDServer,MBTCPMaster,MBSlave,UNetExchange,IOControl,
codegen,DBServer_xxx
* Wed May 20 2015 Pavel Vainerman <pv@altlinux.ru> 2.0-alt34.4 * Wed May 20 2015 Pavel Vainerman <pv@altlinux.ru> 2.0-alt34.4
- (ModbusSlave): fixed bug in much_real_write (again) (thank`s hd@nio14) - (ModbusSlave): fixed bug in much_real_write (again) (thank`s hd@nio14)
......
...@@ -13,30 +13,15 @@ using namespace UniSetExtensions; ...@@ -13,30 +13,15 @@ using namespace UniSetExtensions;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
RRDServer::RRDServer( UniSetTypes::ObjectId objId, xmlNode* cnode, UniSetTypes::ObjectId shmId, const std::shared_ptr<SharedMemory> ic, RRDServer::RRDServer( UniSetTypes::ObjectId objId, xmlNode* cnode, UniSetTypes::ObjectId shmId, const std::shared_ptr<SharedMemory> ic,
const string& prefix ): const string& prefix ):
UObject_SK(objId, cnode), UObject_SK(objId, cnode, string(prefix+"-")),
prefix(prefix) prefix(prefix)
{ {
auto conf = uniset_conf(); auto conf = uniset_conf();
shm = make_shared<SMInterface>(shmId, ui, objId, ic); shm = make_shared<SMInterface>(shmId, ui, objId, ic);
loga = make_shared<LogAgregator>();
loga->add(mylog);
loga->add(ulog());
loga->add(dlog());
UniXML::iterator it(cnode); UniXML::iterator it(cnode);
logserv = make_shared<LogServer>(loga);
logserv->init( prefix + "-logserver", cnode );
if( findArgParam("--" + prefix + "-run-logserver", conf->getArgc(), conf->getArgv()) != -1 )
{
logserv_host = conf->getArg2Param("--" + prefix + "-logserver-host", it.getProp("logserverHost"), "localhost");
logserv_port = conf->getArgPInt("--" + prefix + "-logserver-port", it.getProp("logserverPort"), getId());
}
UniXML::iterator it1(cnode); UniXML::iterator it1(cnode);
if( !it1.goChildren() ) if( !it1.goChildren() )
...@@ -325,12 +310,6 @@ void RRDServer::sysCommand( const UniSetTypes::SystemMessage* sm ) ...@@ -325,12 +310,6 @@ void RRDServer::sysCommand( const UniSetTypes::SystemMessage* sm )
if( sm->command == SystemMessage::StartUp || sm->command == SystemMessage::WatchDog ) if( sm->command == SystemMessage::StartUp || sm->command == SystemMessage::WatchDog )
{ {
if( !logserv_host.empty() && logserv_port != 0 && !logserv->isRunning() )
{
myinfo << myname << "(init): run log server " << logserv_host << ":" << logserv_port << endl;
logserv->run(logserv_host, logserv_port, true);
}
for( auto && it : rrdlist ) for( auto && it : rrdlist )
{ {
try try
......
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
#include "SMInterface.h" #include "SMInterface.h"
#include "SharedMemory.h" #include "SharedMemory.h"
#include "extensions/Extensions.h" #include "extensions/Extensions.h"
#include "LogAgregator.h"
#include "LogServer.h"
#include "LogAgregator.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! /*!
\page page_RRDServer Реализация RRD хранилища \page page_RRDServer Реализация RRD хранилища
...@@ -114,11 +111,6 @@ class RRDServer: ...@@ -114,11 +111,6 @@ class RRDServer:
RRDList rrdlist; RRDList rrdlist;
std::shared_ptr<LogAgregator> loga;
std::shared_ptr<LogServer> logserv;
std::string logserv_host = {""};
int logserv_port = {0};
private: private:
std::string prefix; std::string prefix;
......
...@@ -27,17 +27,6 @@ int main( int argc, const char** argv ) ...@@ -27,17 +27,6 @@ int main( int argc, const char** argv )
{ {
auto conf = uniset_init( argc, argv ); auto conf = uniset_init( argc, argv );
string logfilename(conf->getArgParam("--rrdstorage-logfile"));
if( logfilename.empty() )
logfilename = "rrdstorage.log";
std::ostringstream logname;
string dir(conf->getLogDir());
logname << dir << logfilename;
ulog()->logFile( logname.str() );
dlog()->logFile( logname.str() );
ObjectId shmID = DefaultObjectId; ObjectId shmID = DefaultObjectId;
string sID = conf->getArgParam("--smemory-id"); string sID = conf->getArgParam("--smemory-id");
......
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
uniset2-start.sh -f ./uniset2-rrdserver --confile test.xml \ uniset2-start.sh -f ./uniset2-rrdserver --confile test.xml \
--rrd-name RRDServer1 \ --rrd-name RRDServer1 \
--dlog-add-levels info,crit,warn --rrd-log-add-levels any $*
#ifndef SMLogSugar_H_
#define SMLogSugar_H_
// "синтаксический сахар"..для логов
#ifndef sminfo
#define sminfo if( smlog->debugging(Debug::INFO) ) smlog->info()
#endif
#ifndef smwarn
#define smwarn if( smlog->debugging(Debug::WARN) ) smlog->warn()
#endif
#ifndef smcrit
#define smcrit if( smlog->debugging(Debug::CRIT) ) smlog->crit()
#endif
#ifndef smlog1
#define smlog1 if( smlog->debugging(Debug::LEVEL1) ) smlog->level1()
#endif
#ifndef smlog2
#define smlog2 if( smlog->debugging(Debug::LEVEL2) ) smlog->level2()
#endif
#ifndef smlog3
#define smlog3 if( smlog->debugging(Debug::LEVEL3) ) smlog->level3()
#endif
#ifndef smlog4
#define smlog4 if( smlog->debugging(Debug::LEVEL4) ) smlog->level4()
#endif
#ifndef smlog5
#define smlog5 if( smlog->debugging(Debug::LEVEL5) ) smlog->level5()
#endif
#ifndef smlog6
#define smlog6 if( smlog->debugging(Debug::LEVEL6) ) smlog->level6()
#endif
#ifndef smlog7
#define smlog7 if( smlog->debugging(Debug::LEVEL7) ) smlog->level7()
#endif
#ifndef smlog8
#define smlog8 if( smlog->debugging(Debug::LEVEL8) ) smlog->level8()
#endif
#ifndef smlog9
#define smlog9 if( smlog->debugging(Debug::LEVEL9) ) smlog->level9()
#endif
#ifndef smlogany
#define smlogany smlog->any()
#endif
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment