Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn- write-to-file [{:keys [output_] :as data} fname append? self]
- (let [output (force output_)]
- (try
- (with-open [^java.io.BufferedWriter w (io/writer fname :append append?)]
- (.write w ^String output)
- (.newLine w))
- (catch java.io.IOException e
- (if (:spit-appender/retry? data)
- (throw e) ; Unexpected error
- (do
- (io/make-parents fname)
- (self (assoc data :spit-appender/retry? true))))))))
- (defn my-appender [& [{:keys [fname append? locking?]
- :or {fname "./timbre-spit.log"
- append? true
- locking? true}}]]
- (have? enc/nblank-str? fname)
- {:enabled? true
- :fn
- (fn self [data]
- (if locking?
- (locking (Object.)
- (write-to-file data fname append? self))
- (write-to-file data fname append? self)))})
- (alter-var-root
- (var timbre/spit-appender)
- my-appender)
- (timbre/merge-config! {:appenders {:println {:enabled? false}
- :spit (my-appender {:fname "/tmp/clojure-sample.out"})}})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement