Запись в стандартный поток ошибок

Haskell:
Запись в стандартный поток ошибок

Как:

Используйте System.IO для записи в stderr. Вот простой пример:

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "Это пойдет в stderr"
  putStrLn "Это пойдет в stdout"

Вывод при выполнении программы:

Это пойдет в stdout

Чтобы увидеть вывод stderr, перенаправьте его:

runhaskell your_program.hs 2> error.log

Теперь error.log содержит “Это пойдет в stderr”.

Глубокое погружение

Система ввода-вывода Haskell различает stdout и stderr, сохраняя конвенции Unix. До появления Haskell языки программирования, такие как C, задавали прецедент разделения потоков — stdout для результатов, stderr для ошибок и логов.

Альтернативные способы вывода включают использование библиотек, таких как System.Log.Logger, для более сложного логирования. Что касается реализации, stderr в Haskell является Handle, так же как и дескриптор файла, но заранее определен для ссылки на системный поток вывода ошибок.

Смотрите также