Clojure:
Écrire sur l'erreur standard

Comment faire :

En Clojure, vous pouvez écrire sur stderr en utilisant le flux *err*. Voici un exemple simple :

(.write *err* "Ceci est un message d'erreur.\n")

Notez qu’après avoir écrit un message, vous devriez vider le flux pour garantir que le message est immédiatement sorti :

(flush)

Exemple de sortie sur stderr :

Ceci est un message d'erreur.

Si vous gérez des exceptions, vous voudrez peut-être imprimer les traces de pile sur stderr. Utilisez printStackTrace pour cela :

(try
  ;; Code qui pourrait lancer une exception
  (/ 1 0)
  (catch Exception e
    (.printStackTrace e *err*)))

Pour une journalisation d’erreur plus structurée, des bibliothèques tierces comme timbre peuvent être configurées pour enregistrer sur stderr. Voici une configuration et utilisation basiques :

D’abord, ajoutez timbre à vos dépendances. Puis configurez-le pour utiliser stderr :

(require '[taoensso.timbre :as timbre])

(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; Désactivation de la journalisation stdout
(timbre/set-config! [:appenders :spit :enabled?] false) ;; Désactivation de la journalisation sur fichier
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; Activation de stderr pour les erreurs

(timbre/error "Une erreur s'est produite lors du traitement de votre demande.")

Cela dirigera les messages de niveau d’erreur vers stderr, les rendant distincts de la sortie standard de l’application.