File tree Expand file tree Collapse file tree 4 files changed +53
-6
lines changed Expand file tree Collapse file tree 4 files changed +53
-6
lines changed Original file line number Diff line number Diff line change 55 :password #or [#env " WHEEL_APP_DB_PASSWORD" " postgres" ]
66 :database-name #or [#env " WHEEL_APP_DB_NAME" " wheel" ]
77 :server-name #or [#env " WHEEL_APP_DB_SERVER" " localhost" ]
8- :port-number #or [#env " WHEEL_APP_DB_PORT" 5432 ]}}}
8+ :port-number #or [#env " WHEEL_APP_DB_PORT" 5432 ]}
9+ :log {:slack {:webhook-url #env " WHEEL_APP_LOG_SLACK_WEBHOOK_URL" }}}}
Original file line number Diff line number Diff line change 1212(defn database []
1313 (get-in root [:app :database ]))
1414
15+ (defn slack-log-webhook-url []
16+ (get-in root [:app :log :slack :webhook-url ]))
17+
1518(comment
1619 (mount/start )
1720 (database )
Original file line number Diff line number Diff line change 33 [cheshire.core :as json]
44 [clojure.spec.alpha :as s]
55 [wheel.middleware.event :as event]
6- [wheel.infra.log-appender.database :as database]))
6+ [wheel.infra.log-appender.database :as database]
7+ [wheel.infra.log-appender.slack :as slack]))
78
89(defn- json-output [{:keys [msg_]}]
910 (let [event (read-string (force msg_))]
1011 (json/generate-string event)))
1112
1213(defn init []
1314 (timbre/merge-config! {:output-fn json-output
14- :appenders {:database database/appender}}))
15+ :appenders {:database database/appender
16+ :slack slack/appender}}))
1517
1618(defn write! [{:keys [level]
1719 :as event}]
3537 (write! {:level :info :name :foo })
3638 (s/check-asserts false )
3739 (s/assert ::event/event {:level :info :name :foo })
38- (write! {:name :deranging/succeeded
40+ (write! {:name :ranging/failed
3941 :type :domain
40- :level :info
41- :channel-id " UB "
42+ :level :error
43+ :channel-id " UA "
4244 :timestamp " 2019-10-04T15:56+05:30"
4345 :id (java.util.UUID/randomUUID )
4446 :channel-name :tata-cliq })
Original file line number Diff line number Diff line change 1+ (ns wheel.infra.log-appender.slack
2+ (:require [wheel.slack.webhook :as slack]
3+ [wheel.infra.config :as config]))
4+
5+ (defn- event->text [{event-name :name }]
6+ (str (namespace event-name) " " (name event-name)))
7+
8+ (defn- event->attachment [{:keys [id channel-id channel-name]}]
9+ {:color :danger
10+ :fields [{:title " Channel Name"
11+ :value channel-name
12+ :short true }
13+ {:title " Channel Id"
14+ :value channel-id
15+ :short true }
16+ {:title " Event Id"
17+ :value id}]})
18+
19+ (defn- send-to-slack [{:keys [msg_]}]
20+ (let [event (read-string (force msg_))]
21+ (when (= :domain (:type event))
22+ (let [text (event->text event)
23+ attachment (event->attachment event)]
24+ (slack/post-message! (config/slack-log-webhook-url ) text [attachment])))))
25+
26+ (event->attachment {:name :ranging/failed ,
27+ :type :domain ,
28+ :level :error ,
29+ :channel-id " UA" ,
30+ :timestamp " 2019-10-04T15:56+05:30" ,
31+ :id #uuid " 5040f252-5ff4-4e44-ab9c-72275a5a40ba" ,
32+ :channel-name :tata-cliq })
33+
34+ (def appender {:enabled? true
35+ :output-fn :inherit
36+ :async? true
37+ :min-level :error
38+ :fn send-to-slack})
39+
40+ (comment
41+ (event->text {:name :ranging/failed }))
You can’t perform that action at this time.
0 commit comments