Permalink
Browse files

Merge branch 'dev'

  • Loading branch information...
ptaoussanis committed Jan 29, 2013
2 parents 9179e39 + c6340d9 commit e4104ef61d0742205065cd196b71bab9ea212316
Showing with 29 additions and 9 deletions.
  1. +2 −2 README.md
  2. +1 −1 project.clj
  3. +21 −1 src/taoensso/timbre.clj
  4. +2 −2 src/taoensso/timbre/profiling.clj
  5. +3 −3 src/taoensso/timbre/utils.clj
View
@@ -1,7 +1,7 @@
Current [semantic](http://semver.org/) version:
```clojure
-[com.taoensso/timbre "1.2.0"]
+[com.taoensso/timbre "1.3.0"]
```
# Timbre, a (sane) Clojure logging & profiling library
@@ -27,7 +27,7 @@ Timbre is an attempt to make **simple logging simple** and more **complex loggin
Depend on Timbre in your `project.clj`:
```clojure
-[com.taoensso/timbre "1.2.0"]
+[com.taoensso/timbre "1.3.0"]
```
and `use` the library:
View
@@ -1,4 +1,4 @@
-(defproject com.taoensso/timbre "1.2.0"
+(defproject com.taoensso/timbre "1.3.0"
:description "Clojure logging & profiling library"
:url "https://github.com/ptaoussanis/timbre"
:license {:name "Eclipse Public License"}
View
@@ -7,7 +7,7 @@
(:import [java.util Date Locale]
[java.text SimpleDateFormat]))
-;;;; Public str utils
+;;;; Public utils
(defn str-println
"Like `println` but prints all objects to output stream as a single
@@ -27,6 +27,17 @@
(def green (partial color-str :green))
(def yellow (partial color-str :yellow))
+(def default-out (java.io.OutputStreamWriter. System/out))
+(def default-err (java.io.PrintWriter. System/err))
+
+(defmacro with-default-outs
+ "Executes body with Clojure's default *out* and *err* bindings."
+ [& body] `(binding [*out* default-out *err* default-err] ~@body))
+
+(defmacro with-err-as-out
+ "Executes body with *err* bound to *out*."
+ [& body] `(binding [*err* *out*] ~@body))
+
;;;; Default configuration and appenders
(utils/defonce* config
@@ -316,6 +327,15 @@
(def-loggers) ; Actually define a logger for each logging level
+(defmacro log-errors
+ [& body] `(try ~@body (catch Exception e# (error e#))))
+
+(defmacro log-and-rethrow-errors
+ [& body] `(try ~@body (catch Exception e# (error e#) (throw e#))))
+
+(comment (log-errors (/ 0))
+ (log-and-rethrow-errors (/ 0)))
+
;;;; Dev/tests
(comment
@@ -29,7 +29,7 @@
(defn plog-stats
"{::pname [time1 time2 ...] ...} => {::pname {:min <min-time> ...} ...}"
[plog]
- (reduce (fn [m [pname times]]
+ (reduce (fn [m [pname times]] ; TODO reduce-kv for Clojure 1.4+
(let [count (count times)
time (reduce + times)
mean (long (/ time count))
@@ -68,7 +68,7 @@
ft (fn [nanosecs]
(let [pow #(Math/pow 10 %)
ok-pow? #(>= nanosecs (pow %))
- to-pow #(utils/round-to (/ nanosecs (pow %1)) %2)]
+ to-pow #(utils/round-to %2 (/ nanosecs (pow %1)))]
(cond (ok-pow? 9) (str (to-pow 9 1) "s")
(ok-pow? 6) (str (to-pow 6 0) "ms")
(ok-pow? 3) (str (to-pow 3 0) "μs")
@@ -47,11 +47,11 @@
(defn round-to
"Rounds argument to given number of decimal places."
- [x places]
+ [places x]
(if (zero? places)
(Math/round (double x))
(let [modifier (Math/pow 10.0 places)]
(/ (Math/round (* x modifier)) modifier))))
-(comment (round-to 10 0)
- (round-to 10.123 2))
+(comment (round-to 0 10)
+ (round-to 2 10.123))

0 comments on commit e4104ef

Please sign in to comment.