00001 // $Id: LogMessenger.cc,v 1.11 2008/04/09 22:09:36 jeremy Exp $ 00002 00003 #include "LogMessenger.hh" 00004 00005 // slic 00006 #include "LogStream.hh" 00007 #include "StringUtil.hh" 00008 00009 // geant4 00010 #include "G4UIcmdWithAnInteger.hh" 00011 #include "G4UIcmdWithAString.hh" 00012 #include "G4UIdirectory.hh" 00013 00014 namespace slic 00015 { 00016 LogMessenger::LogMessenger(LogStream* logger) 00017 : m_logStream( logger ) 00018 { 00019 defineCommands(); 00020 } 00021 00022 LogMessenger::~LogMessenger() 00023 {;} 00024 00025 void LogMessenger::SetNewValue(G4UIcommand* cmd, G4String newVals) 00026 { 00027 if ( cmd == m_setLevelCmd ) { 00028 m_logStream->setOutputLevel( (LOG::ELevel)G4UIcmdWithAnInteger::GetNewIntValue( newVals ) ); 00029 } 00030 else if ( cmd == m_fileCmd ) { 00031 m_logStream->setOutputFile( newVals ); 00032 } 00033 } 00034 00035 void LogMessenger::defineCommands() 00036 { 00037 m_loggerDir = new G4UIdirectory( std::string( "/log/" + m_logStream->getName() + "/" ).c_str() ); 00038 m_loggerDir->SetGuidance( std::string( "Commands for the logger " + m_logStream->getName() ).c_str() ); 00039 00040 m_setLevelCmd = new G4UIcmdWithAnInteger( std::string("/log/" + m_logStream->getName() + "/setLogLevel" ).c_str(), this ); 00041 m_setLevelCmd->SetParameterName( "logLevel", false ); 00042 std::string range = "logLevel >= 0 && logLevel < " + StringUtil::toString( LOG::nlevels ); 00043 m_setLevelCmd->SetRange( range.c_str() ); 00044 m_setLevelCmd->SetGuidance("Set the log level."); 00045 00046 m_fileCmd = new G4UIcmdWithAString( std::string("/log/" + m_logStream->getName() + "/setLogFile" ).c_str(), this ); 00047 m_fileCmd->SetParameterName( "file", false ); 00048 m_fileCmd->SetGuidance("Set the output file for this logger."); 00049 } 00050 }
1.5.4