2016-03-25 5 views
1

私はproject.clj内で[ring.middleware.logger "0.5.0" :exclusions [org.slf4j/slf4j-log4j12]]を通していくつかのロギングマジックを取得するプロジェクトを継承しました。ミドルウェアの設定を取得したようring.middleware.logger/wrap-with-loggerはで来て、それが問題は、このログ内のフィールドの一部が色付けANSI出てくるということです...ANSIカラーリングを抑制するにはどうすればいいですか?ring.middleware.loggerはログに記録していますか?

2016-03-25 15:46:03,787 a939 level=INFO [qtp509784188-34] core:288 - Starting :delete /v4/events/c.c.t.p.v4.api-a9c6d846-1da5-4593-a711-18d90aa8490f/test-layer/2015-05-31T00:00:00.000Z for 127.0.0.1 {"host" "localhost:50654", "user-agent" "Apache-HttpClient/4.3.6 (java 1.5)", "accept-encoding" "gzip, deflate", "connection" "close"} 
2016-03-25 15:46:03,788 a939 level=INFO [qtp509784188-34] core:288 - \ - - - - Params: {} 
2016-03-25 15:46:03,794 a939 level=INFO [qtp509784188-34] core:288 - Finished :delete /v4/events/c.c.t.p.v4.api-a9c6d846-1da5-4593-a711-18d90aa8490f/test-layer/2015-05-31T00:00:00.000Z for 127.0.0.1 in (6 ms) Status: 404 

...それぞれの要求等に私にいくつかの素敵なログを取得します。 "a939"フィールドの上にあるもののようなリクエストID、ANSIカラーで表示される "Starting"、 "Finished"、 "Status"コードがあります。これは、現在はアスキー数字で表示される制御文字が存在するため、SplunkのログをRegExに挑戦させるという不愉快な副作用があります。

2016-03-25 15:46:03,794 [0m[35m[44ma939[0m level=INFO [qtp509784188-34] onelog.core - [36mFinished...Status: [39m200[0m 

ring.middleware.loggerでロギング出力のANSIカラー化を抑制するにはどうすればよいですか?

答えて

2

代替が[ring-logger-onelog "0.7.6"]に移行することです。よりフレキシブルにするという目的で、ring.middleware.loggerのフォークとして開始しました。たとえば、すべてのANSIカラー化を避けるためのオプション:printer :no-colorが含まれています。

in the READMEに示すように、移動経路は、非常に滑らかである:

  • [ring.middleware.logger "0.5.0"]から[ring-logger-onelog "0.7.6"]
  • にproject.cljに依存を交換logger/wrap-with-logger[ring.middleware.logger :as logger]
  • [ring.logger.onelog :as logger]に渡すオプションから必要な交換キーワード引数の代わりに適切なマップを使用します。

はあなたがログに記録されるだろうかを見るために実行することができますexample appあります。

異なるログバックエンドで動作するコアring-loggerライブラリもあります(onelogに依存するring-logger-onelogではなく、最終的にはlog4j ...またはslf4jを経由します)。 ring-loggerにはrequest-idが組み込まれていませんが、自分で実装する方法を示すan example in the READMEがあります。

+0

これはうまくいきますが、これはうまくいくでしょうが、私が完全に理解していないclojureロジックを統合するのは少し気になりません。私は、 "reify"が何を意味するのか、それは病気のように聞こえる、あるいは少なくとも暴力的であることを理解する時が来たと思う。 [ring.logger.onelogのものがちょうど私がミドルウェアを追加しなくてもリクエストIDのコンセプトを得たならば素晴らしいだろう。 –

+1

ああ、ねえ、私の悪い。[ring-logger-onelog "0.7.6"]はうまくいきます。私はリクエストIDが無言だと思う。ありがとう。 –

1

あなたは回避策を作成することができるチャンスがあります

など ring.middleware.loggerは、ANSIカラーリングがデフォルトで実装されているようだと簡単に pre-loggerあなた自身を与えることなく、それを無効にする設定オプションがない、 post-loggerring.middleware.loggerはANSIカラーの適用に clansiを使用します。 clansiは without-ansiマクロを提供し、着色を無効にします。

あなたはring.middleware.loggerをラップする必要があり、独自のミドルウェアを書き込むことができます。

(defn wrap-no-ansi-colors [handler] 
    (fn [rq] 
    (without-ansi 
     (handler rq)))) 

(def app 
    (-> handler 
    (wrap-with-logger) 
    (wrap-no-ansi-colors))) 
関連する問題