Scrivere sull'errore standard

Clojure:
Scrivere sull'errore standard

Come fare:

In Clojure, puoi scrivere su stderr utilizzando lo stream *err*. Ecco un esempio basilare:

(.write *err* "Questo è un messaggio di errore.\n")

Nota che dopo aver scritto un messaggio, dovresti fare il flush dello stream per assicurarti che il messaggio venga immediatamente emesso:

(flush)

Esempio di output su stderr:

Questo è un messaggio di errore.

Se stai gestendo eccezioni, potresti voler stampare le tracce dello stack su stderr. Usa printStackTrace per questo:

(try
  ;; Codice che potrebbe generare un'eccezione
  (/ 1 0)
  (catch Exception e
    (.printStackTrace e *err*)))

Per un logging degli errori più strutturato, librerie di terze parti come timbre possono essere configurate per registrare su stderr. Ecco una configurazione e un uso basilari:

Prima di tutto, aggiungi timbre alle tue dipendenze. Poi configuralo per utilizzare stderr:

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

(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; Disabilita il logging su stdout
(timbre/set-config! [:appenders :spit :enabled?] false) ;; Disabilita il logging su file
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; Abilita stderr per gli errori

(timbre/error "Si è verificato un errore durante l'elaborazione della tua richiesta.")

Ciò dirigerà i messaggi di livello errore su stderr, rendendoli distinti dall’output standard dell’applicazione.