Подтвердить что ты не робот

Должен ли я записывать сообщения в stderr или stdout?

У меня есть программа, которую я пишу, что я хочу написать собственное средство ведения журнала (например, диагностика, уведомление, предупреждение, ошибка).

Должен ли я использовать поток stdout или stderr для этого? Это интерпретатор сорта, и пользователь может попросить его распечатать вывод.

Изменить: Пожалуйста, прекратите рекомендовать мне фреймворки регистрации: (

4b9b3361

Ответ 1

Регулярный вывод (фактический результат запуска программы) должен идти на stdout, такие вещи, как вы упомянули (например, диагностика, уведомление, предупреждение, ошибка) на stderr.

Если нет "регулярного вывода", я бы сказал, что на самом деле не важно, какой из них вы выберете. Вы можете утверждать, что журнал является единственным выходом, поэтому он должен перейти в stdout. Или вы можете утверждать, что это все еще "исключительная информация", которая должна перейти к stderr.

Ответ 2

Вы пишете что-то еще до stdout? Если ответ Yes, то было бы довольно сложно отличить обычный поток от ошибок в середине файла, который использовался для перенаправления из stdout.

Что делать, если stdout будет использоваться как вход для другой программы? Будет ли это возможность анализировать эту отладочную информацию? В этом случае было бы хорошо написать только критические ошибки stderr. Если вам нужно написать что-то еще, вы можете рассмотреть возможность записи в дополнительный файл журнала.