Skip to content

Commit 5254280

Browse files
committed
add slack appender
1 parent 46e4b95 commit 5254280

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

clojure/wheel/resources/config.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
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"}}}}

clojure/wheel/src/wheel/infra/config.clj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
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)

clojure/wheel/src/wheel/infra/log.clj

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
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}]
@@ -35,10 +37,10 @@
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})
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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}))

0 commit comments

Comments
 (0)