Haskell:
Pisanie do standardowego błędu
Jak to zrobić:
W Haskellu, pisanie do stderr jest proste dzięki modułowi System.IO
z biblioteki podstawowej. Poniżej znajduje się podstawowy przykład demonstrujący:
import System.IO
main :: IO ()
main = do
hPutStrLn stderr "To jest komunikat o błędzie."
Wyjście tego programu do stderr będzie:
To jest komunikat o błędzie.
Jeśli pracujesz nad bardziej złożoną aplikacją, lub jeśli potrzebujesz lepszej kontroli nad logowaniem (w tym błędów), możesz optować za użyciem biblioteki stron trzecich. Jednym z popularnych wyborów jest monad-logger
, który integruje się ze stylem programowania mtl
w Haskellu. Oto mały fragment używający monad-logger
:
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Logger
main :: IO ()
main = runStderrLoggingT $ do
logErrorN "To jest komunikat o błędzie używając monad-logger."
Kiedy uruchomiony, wersja monad-logger
podobnie wypisuje komunikat o błędzie, ale jest wyposażona w więcej kontekstu, jak znaczniki czasu czy poziomy logowania, w zależności od konfiguracji:
[Error] To jest komunikat o błędzie używając monad-logger.
Obie metody służą celowi pisania do stderr, z wyborem w dużej mierze zależnym od złożoności i potrzeb twojej aplikacji.