2016-02-25 2 views
2

Я использую wrap-with-logger (от ring.middleware.logger) и wrap-params (от ring.middleware.params) посредников в моем приложении. Любой простой способ фильтрации чувствительных параметров (пароль, номер кредитной карты и т. Д.) Из журналов?Фильтровать чувствительные параметры из журналов в приложении clojure app

ответ

2

Вы также могли бы рассмотреть возможность перехода к ring-logger, который включает в себя feature to redact sensitive information:

По умолчанию, кольцо-регистратор красноломкий-заголовок авторизации или любой из параметров с именем password (на любом уровне вложенности). Если вы хотите, кольцо-логгер красноломкий другие Params вы можете настроить redact-keys вариант:

(wrap-with-logger app {:redact-keys #{:senha :token}) 

Ring-регистратор будет ходить через Params и заголовки и любую клавишу литературной обработки, чье имя содержится в этом redact-keys наборе.

Там же ring-logger-onelog, что должно сделать его очень легко перейти от ring.middleware.logger звенеть регистратор

+0

полезное! Спасибо .. –

+0

Как вы получаете эту полезную вещь id-запроса (что% x logs) с кольцевым регистратором? –

+0

@BobKuhar теперь поддерживается только ring-logger-onelog. Открытая проблема заключается в том, чтобы добавить его в кольцевой журнал (или, как минимум, в ring-logger-timbre): https://github.com/nberger/ring-logger/issues/7. Не стесняйтесь звонить там. PR тоже приветствуются :) – nberger

2

Вы можете реализовать пользовательский pre-logger, который фильтрует запрос в соответствии с вашими потребностями.

Смотрите следующее:

(use 'ring.adapter.jetty) 
(require '[ring.middleware.logger :as logger]) 

(defn handler [request] 
    {:status 200 
    :headers {"Content-Type" "text/html"} 
    :body "Hello World"}) 

(run-jetty 
(logger/wrap-with-logger 
    handler 
    :pre-logger 
    (fn [options req] 
    ;; Filtering goes here 
    (let [filtered-req (filter-sensitive-data req)] 
     ((:info options) "Filtered requrest is: " filtered-req)))) 
{:port 8080}) 

Примечание, в то время как документация claims, что pre-logger принимает только один аргумент, truly it is two-arg function.

Смежные вопросы