Clojure:
Escribiendo en el error estándar

Cómo hacerlo:

En Clojure, puedes escribir en stderr utilizando el flujo *err*. Aquí tienes un ejemplo básico:

(.write *err* "Este es un mensaje de error.\n")

Nota que después de escribir un mensaje, debes vaciar el flujo para asegurar que el mensaje se muestre inmediatamente:

(flush)

Ejemplo de salida a stderr:

Este es un mensaje de error.

Si estás manejando excepciones, es posible que desees imprimir rastreos de pila en stderr. Usa printStackTrace para esto:

(try
  ;; Código que podría lanzar una excepción
  (/ 1 0)
  (catch Exception e
    (.printStackTrace e *err*)))

Para un registro de errores más estructurado, bibliotecas de terceros como timbre pueden configurarse para registrar en stderr. Aquí tienes una configuración y uso básicos:

Primero, añade timbre a tus dependencias. Luego configúralo para usar stderr:

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

(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; Deshabilita el registro en stdout
(timbre/set-config! [:appenders :spit :enabled?] false) ;; Deshabilita el registro en archivos
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; Habilita stderr para errores

(timbre/error "Ocurrió un error mientras se procesaba su solicitud.")

Esto dirigirá los mensajes de nivel de error a stderr, haciéndolos distintos de la salida estándar de la aplicación.