Elixir:
Запись в стандартный поток ошибок
Как это сделать:
Чтобы написать в stderr
в Elixir, используйте IO.warn/1
или IO.puts/2
. Вот как:
# Запись в stderr с помощью IO.warn
IO.warn("Что-то пошло не так!")
# Запись в stderr с помощью IO.puts
IO.puts(:stderr, "Подробная информация об ошибке.")
Пример вывода в stderr
:
Что-то пошло не так!
Подробная информация об ошибке.
Глубокое погружение
Исторически разделение stderr
и stdout
позволяло пользователям Unix обрабатывать сообщения об ошибках отдельно от обычного вывода, что могло быть особенно полезно при перенаправлении вывода в файл или другую программу.
Elixir, будучи современным языком, поддерживает эту традицию. Хотя IO.puts/1
по умолчанию использует stdout
, передача атома :stderr
в качестве первого аргумента переключает поток. IO.warn/1
по умолчанию пишет в stderr
, что подходит для сообщений с предупреждениями.
Альтернативы для логирования ошибок в Elixir могут включать модуль Logger для более структурированного подхода. Его можно настроить на запись логов различных уровней в stderr
.
Под капотом функции Elixir для работы со stderr и stdout взаимодействуют с модулем :io Erlang, который, в свою очередь, работает с потоками ввода-вывода операционной системы.