Clojure:
Writing to standard error
How to:
In Clojure, you can write to stderr using the *err*
stream. Here’s a basic example:
(.write *err* "This is an error message.\n")
Note that after writing a message, you should flush the stream to ensure the message is immediately output:
(flush)
Sample output to stderr:
This is an error message.
If you’re handling exceptions, you might want to print stack traces to stderr. Use printStackTrace
for this:
(try
;; Code that might throw an exception
(/ 1 0)
(catch Exception e
(.printStackTrace e *err*)))
For more structured error logging, third-party libraries like timbre
can be configured to log to stderr. Here’s a basic setup and usage:
First, add timbre
to your dependencies. Then configure it to use stderr:
(require '[taoensso.timbre :as timbre])
(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; Disable stdout logging
(timbre/set-config! [:appenders :spit :enabled?] false) ;; Disable file logging
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; Enable stderr for errors
(timbre/error "An error occurred while processing your request.")
This will direct error-level messages to stderr, making them distinct from standard application output.