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.