Login
Спрятать logging code
651 просмотров
Перейти к просмотру всей ветки
scorpi_ скептик
in Antwort Simple 02.08.06 16:01
Ну а оно тебе надо вс╦ писать в лог? Интересны ошибки. Короче говоря на скорую руку я бы написал нечто вроде:
В ответ на:
class Executor : unary_function< const DMPType&, void >
{
const ExportParameter& exppar_;
string java_path_;
string actualDir_;
void log_and_throw( string const& msg)
{
LOG << level(basic_logger::DEBUG) << parameter, environment, etc... << endl;
throw runtime_error( msg );
}
public:
Executor( const ExportParameter& exp ) : exppar_( exp ),
java_path_( winFindExecutable("java.exe") ),
actualDir_( GetDir() )
{
init();
ChDir( exppar_.getKBVRootDir() );
}
~Executor()
{
if ( ! actualDir_.empty() )
ChDir( actualDir );
}
void operator()( const Parameters& p )
{
HANDLE handle = winExecuteProgram( java_path_, cmd, true );
if ( handle )
{
WaitForSingleObject( handle, INFINITE );
int code = winGetProcessReturnCode( handle );
if ( code > 2 )
log_and_throw( "Pruefmodul: Fehler " + to_string( code ) );
}
else
log_and_throw( "Pruefmodul konnte nicht gestartet werden" );
}
};
{
try {
const ExportParameter& exppar = ExportParameter::getParameter();
for_each( exppar.getDMPType().begin(), exppar.getDMPType().end(), Executor( exppar ) );
}
catch( runtime_error const& ) {
return false;
}
return parseProtocol();
}