Я не думаю, что последнее обязательно "лучше" или "хуже". Конечно, это требует гораздо меньше кода, когда вы просто перенаправляете cout / stdout из оболочки. Это позволяет простой вывод текста (через printf / fprintf / cout).
Я предпочитаю использовать простые вызовы cout для быстрой и грязной регистрации и отладки в стиле "printf".
По своему опыту я использую системный журнал для вещей, которые абсолютно имеют для регистрации. Например, ошибки, когда файл не открывается или у вас закончились ресурсы или что-то в этом роде.
Я использую printf / fprintf для других «простых» задач регистрации.
Несколько лет назад я разработал простую систему отладки, которую теперь просто подключаю к своим новым приложениям Linux. Затем я могу просто вызвать соответствующие функции в этом коде. Это похоже на системный журнал в том, что он имеет «уровни» отладки. Например, уровень 1 всегда записывает в стандартный вывод, уровень 2 записывает в стандартный вывод, уровень 4 пишет в системный журнал, уровень 5 может создавать новый файл и записывать в него сообщения и т. Д.