Clojure:
標準エラーへの書き込み
方法:
Clojureでは、*err*
ストリームを使用してstderrに書き込むことができます。基本的な例をこちらです:
(.write *err* "これはエラーメッセージです。\n")
メッセージを書き込んだ後、ストリームをフラッシュして、メッセージが直ちに出力されることを確実にする必要があります:
(flush)
stderrへのサンプル出力:
これはエラーメッセージです。
例外を処理している場合は、スタックトレースをstderrに出力したいかもしれません。これには printStackTrace
を使用します:
(try
;; 例外を投げる可能性のあるコード
(/ 1 0)
(catch Exception e
(.printStackTrace e *err*)))
より構造化されたエラーログには、timbre
のようなサードパーティのライブラリをstderrへログを記録するように設定することができます。基本的なセットアップと使用方法は次の通りです:
まず、依存関係に timbre
を追加します。次に、stderrを使用するように設定します:
(require '[taoensso.timbre :as timbre])
(timbre/set-config! [:appenders :standard-out :enabled?] false) ;; stdoutのログ記録を無効にする
(timbre/set-config! [:appenders :spit :enabled?] false) ;; ファイルログ記録を無効にする
(timbre/set-config! [:appenders :stderr :min-level] :error) ;; エラーについてはstderrを有効にする
(timbre/error "リクエストの処理中にエラーが発生しました。")
これにより、エラーレベルのメッセージがstderrに向けられ、標準アプリケーション出力と区別されます。