Skip to content

Commit

Permalink
[#233] [3rd-party appender] Gelf: ensure short_message is not empty…
Browse files Browse the repository at this point in the history
… + add extra fields (@vise890)

Gelf really dislikes empty `short_message`s:
http://docs.graylog.org/en/2.2/pages/gelf.html#gelf-payload-specification

If `short_message` is not set (or is an empty string), the message will not
appear in the logs altogether.
  • Loading branch information
vise890 authored and ptaoussanis committed Apr 15, 2018
1 parent 68673fc commit bf02914
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions src/taoensso/timbre/appenders/3rd_party/gelf.clj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,31 @@
(.transport transport))]
(GelfTransports/create config)))

(defn data->gelf-message
[data]
(let [{:keys [msg_ hostname_
level instant
context ?err ?ns-str
?file ?line]}
data

log-level (timbre-to-gelf-level level)
msg (or (and (not-empty (force msg_))
(force msg_))
(and ?err
(.getMessage ?err))
"EMPTY MSG")
msg-builder (-> (GelfMessageBuilder. msg (force hostname_))
(.level log-level)
(.timestamp (.getTime instant)))]
(cond-> msg-builder
?err (.fullMessage (timbre/stacktrace ?err {:stacktrace-fonts {}}))
context (.additionalField "context" context)
?ns-str (.additionalField "namespace" ?ns-str)
?file (.additionalField "file" ?file)
?line (.additionalField "line" ?line))
(.build msg-builder)))

(defn gelf-appender
"Returns a Timbre appender that sends gelf messages to a remote host. Params:
`gelf-server` - IP address or hostname string of the remote logging server
Expand All @@ -49,9 +74,5 @@
:gelf-transport tranport
:fn
(fn [data]
(let [{:keys [appender msg_ level hostname_]} data
gelf-transport (:gelf-transport appender)
log-level (timbre-to-gelf-level level)
gelf-message (-> (GelfMessageBuilder. (force msg_) (force hostname_))
(.level log-level) .build)]
(.send gelf-transport gelf-message)))})))
(.send (get-in data [:appender :gelf-transport])
(data->gelf-message data)))})))

0 comments on commit bf02914

Please sign in to comment.