Я пытаюсь подавить вывод из секции кода в скрипте (а именно, инициализацию сети из сети Caffe). Я попробовал оборачивать соответствующий бит кода в evalc
командыПодавление вывода на stderr в matlab
[suppressed_output, var_output] = evalc('someFunction(input)');
Но это не работает. У меня все еще есть множество строк (без ошибок) вывода из инициализации сети, которые забивают мои журналы (среди всего желаемого выхода, напечатанного через fprintf('')
в скрипте). Я думаю, что это происходит потому, что соответствующая функция записи в STDERR
- первая строка печатает это предупреждение (вместо STDOUT
?):
WARNING: Logging before InitGoogleLogging() is written to STDERR
... а затем сотни строк, что она делает следовать, например:
I0215 15:01:51.840272 28620 upgrade_proto.cpp:66] Attempting to upgrade input file specified using deprecated input fields: tmp-def.prototxt
I0215 15:01:51.840360 28620 upgrade_proto.cpp:69] Successfully upgraded file specified using deprecated input fields.
...
Могу ли я как-то подавить вывод на STDERR
(без баловаться с содержанием функции)? Идеально только локально для этой конкретной функции, так как я все равно хотел бы получить потенциальные сообщения об ошибках.
В случае уместно: я называю myScript
с помощью команды MATLAB линии и ее вывод записывается в журнал (mlexec.log
) с tee
:
matlab -nodesktop -nosplash -display :1 -r "try, myScript; catch e, disp(getReport(e)), end, quit force" 2>&1| tee mlexec.log
Я думаю, что синтаксис '2> NUL' – Rotem
@Rotem ничего себе, что на самом деле указывает на недостаток. '2> & 1' передал выход' STDERR' прямо на 'STDOUT', который мне нужен для отладки waaay назад. Поток «STDERR» ('2') в Nirvana' 2> NUL' или другой файл журнала ('2> mlexec.stderr.log') решает проблему. Спасибо, вы хотите, чтобы сообщение было ответом, поэтому я могу принять его? – Honeybear
Рад, что я мог бы помочь ... Вы позволили опубликовать его как ответ, если хотите. – Rotem