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.