Clojure:
Pisanie do standardowego błędu
Jak to zrobić:
W Clojure można pisać do stderr używając strumienia *err*. Oto podstawowy przykład:
(.write *err* "To jest komunikat o błędzie.\n")Należy zauważyć, że po napisaniu wiadomości, powinieneś opróżnić strumień, aby upewnić się, że wiadomość jest natychmiast wyświetlona:
(flush)Przykładowe wyjście do stderr:
To jest komunikat o błędzie.Jeśli zajmujesz się obsługą wyjątków, możesz chcieć wyświetlić ślady stosu do stderr. Użyj printStackTrace do tego celu:
(try
;; Kod, który może zgłosić wyjątek
(/ 1 0)
(catch Exception e
(.printStackTrace e *err*)))Dla bardziej strukturalnego logowania błędów, biblioteki stron trzecich takie jak timbre mogą być konfigurowane do logowania do stderr. Oto podstawowa konfiguracja i użycie:
Najpierw dodaj timbre do swoich zależności. Następnie skonfiguruj go do używania stderr:
(require '[taoensso.timbre :as timbre])
(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; Wyłącz logowanie stdout
(timbre/set-config! [:appenders :spit :enabled?] false) ;; Wyłącz logowanie do pliku
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; Włącz stderr dla błędów
(timbre/error "Wystąpił błąd podczas przetwarzania Twojego żądania.")To skieruje komunikaty na poziomie błędu do stderr, czyniąc je odrębnymi od standardowego wyjścia aplikacji.