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.