diff --git a/CHANGELOG.md b/CHANGELOG.md index e363e6b..c8affa8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## v3.0.0-RC2 / 2013-12-04 +## v3.0.0-RC4 / 2013-Jan-02 Major update, non-breaking though users with custom appenders are encouraged to view the _Changes_ section below. This version polishes up the codebase and general design. Tightened up a few aspects of how appenders and appender middleware work. Added a serializing Carmine appender (I use something similar in prod most of the time). Also finally added facilities for ad hoc (non-atom) logging configuration. @@ -6,6 +6,7 @@ Overall quite happy with the state of Timbre as of this release. No major antici ### Features * Android appender, courtesy of AdamClements. + * Rolling appender, courtesy of megayu. * Powerful, high-performance Carmine (Redis) appender: query-able, rotating serialized log entries by log level. See README or appender's docstring for details. (Recommended!) * Appender rate limits now specified in a more flexible format: `[ncalls window-msecs]`, e.g. `[1 2000]` for 1 write / 2000 msecs. * Appender rate limits now also apply (at 1/4 ncalls) to any _particular_ logging arguments in the same time window. This helps prevent a particular logging call from flooding the limiter and preventing other calls from getting through. diff --git a/README.md b/README.md index 99af9aa..e57ab27 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ **[API docs](http://ptaoussanis.github.io/timbre/)** | **[CHANGELOG](https://github.com/ptaoussanis/timbre/blob/master/CHANGELOG.md)** | [contact & contributing](#contact--contribution) | [other Clojure libs](https://www.taoensso.com/clojure-libraries) | [Twitter](https://twitter.com/#!/ptaoussanis) | current [semantic](http://semver.org/) version: ```clojure -[com.taoensso/timbre "3.0.0-RC3"] ; Non-breaking upgrade - see CHANGELOG for details +[com.taoensso/timbre "3.0.0-RC4"] ; Non-breaking upgrade - see CHANGELOG for details [com.taoensso/timbre "2.7.1"] ; Stable ``` @@ -31,7 +31,7 @@ Logging with Java can be maddeningly, unnecessarily hard. Particularly if all yo Add the necessary dependency to your [Leiningen](http://leiningen.org/) `project.clj` and use the supplied ns-import helper: ```clojure -[com.taoensso/timbre "3.0.0-RC3"] ; project.clj +[com.taoensso/timbre "3.0.0-RC4"] ; project.clj (ns my-app (:require [taoensso.timbre :as timbre])) ; Your ns (timbre/refer-timbre) ; Provides useful Timbre aliases in this ns diff --git a/project.clj b/project.clj index 68bb715..6f733db 100644 --- a/project.clj +++ b/project.clj @@ -1,11 +1,11 @@ -(defproject com.taoensso/timbre "3.0.0-RC3" +(defproject com.taoensso/timbre "3.0.0-RC4" :description "Clojure logging & profiling library" :url "https://github.com/ptaoussanis/timbre" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.4.0"] [org.clojure/tools.macro "0.1.5"] - [io.aviso/pretty "0.1.6"]] + [io.aviso/pretty "0.1.8"]] :profiles {:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]} :1.5 {:dependencies [[org.clojure/clojure "1.5.1"]]} :1.6 {:dependencies [[org.clojure/clojure "1.6.0-alpha2"]]} @@ -19,7 +19,7 @@ "start-dev" ["with-profile" "+dev,+test,+bench" "repl" ":headless"] "codox" ["with-profile" "+dev,+test" "doc"]} :plugins [[lein-expectations "0.0.8"] - [lein-autoexpect "1.0"] + [lein-autoexpect "1.2.1"] [lein-ancient "0.5.4"] [codox "0.6.6"]] :min-lein-version "2.0.0" diff --git a/src/taoensso/timbre.clj b/src/taoensso/timbre.clj index 0db7b42..252457b 100644 --- a/src/taoensso/timbre.clj +++ b/src/taoensso/timbre.clj @@ -291,8 +291,7 @@ (assoc :message (when-not (empty? args) (case msg-type - :format (if-not (next args) (str args) - (apply format args)) + :format (apply format args) :print-str (apply print-str args) :nil nil))))) juxtfn-args (assoc juxtfn-args :timestamp (timestamp-fn instant)) diff --git a/src/taoensso/timbre/profiling.clj b/src/taoensso/timbre/profiling.clj index 0f3969d..8be9515 100644 --- a/src/taoensso/timbre/profiling.clj +++ b/src/taoensso/timbre/profiling.clj @@ -105,7 +105,7 @@ (perc accounted clock-time) (ft accounted))))) (defmacro defnp "Like `defn` but wraps body in `p` macro." - {:arglists '([name doc-string? attr-map? [params] prepost-map? body])} + {:arglists '([name ?doc-string ?attr-map [params] ?prepost-map body])} [name & sigs] (let [[name [params & sigs]] (macro/name-with-attributes name sigs) prepost-map (when (and (map? (first sigs)) (next sigs)) (first sigs))