Allow `pspy` to capture time for exception-throwing bodies (thanks Jacek Lach)

This commit is contained in:
Peter Taoussanis 2013-07-20 00:35:26 +07:00
parent 807cb40e0f
commit 95109b7451
3 changed files with 9 additions and 8 deletions

View File

@ -1,7 +1,7 @@
**[API docs](http://ptaoussanis.github.io/timbre/)** | **[CHANGELOG](https://github.com/ptaoussanis/timbre/blob/master/CHANGELOG.md)** | [contact & contributing](#contact--contributing) | [other Clojure libs](https://www.taoensso.com/clojure-libraries) | [Twitter](https://twitter.com/#!/ptaoussanis) | current [semantic](http://semver.org/) version: **[API docs](http://ptaoussanis.github.io/timbre/)** | **[CHANGELOG](https://github.com/ptaoussanis/timbre/blob/master/CHANGELOG.md)** | [contact & contributing](#contact--contributing) | [other Clojure libs](https://www.taoensso.com/clojure-libraries) | [Twitter](https://twitter.com/#!/ptaoussanis) | current [semantic](http://semver.org/) version:
```clojure ```clojure
[com.taoensso/timbre "2.3.0"] ; See CHANGELOG for breaking changes since 1.x [com.taoensso/timbre "2.3.1"] ; See CHANGELOG for breaking changes since 1.x
``` ```
# Timbre, a (sane) Clojure logging & profiling library # Timbre, a (sane) Clojure logging & profiling library
@ -26,7 +26,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 `require` the library in your ns: Add the necessary dependency to your [Leiningen](http://leiningen.org/) `project.clj` and `require` the library in your ns:
```clojure ```clojure
[com.taoensso/timbre "2.3.0"] ; project.clj [com.taoensso/timbre "2.3.1"] ; project.clj
(ns my-app (:require [taoensso.timbre :as timbre (ns my-app (:require [taoensso.timbre :as timbre
:refer (trace debug info warn error fatal spy with-log-level)])) ; ns :refer (trace debug info warn error fatal spy with-log-level)])) ; ns
``` ```

View File

@ -1,4 +1,4 @@
(defproject com.taoensso/timbre "2.3.0" (defproject com.taoensso/timbre "2.3.1"
:description "Clojure logging & profiling library" :description "Clojure logging & profiling library"
:url "https://github.com/ptaoussanis/timbre" :url "https://github.com/ptaoussanis/timbre"
:license {:name "Eclipse Public License" :license {:name "Eclipse Public License"

View File

@ -52,11 +52,12 @@
`(if-not *pdata* `(if-not *pdata*
(do ~@body) (do ~@body)
(let [name# ~name (let [name# ~name
start-time# (System/nanoTime) start-time# (System/nanoTime)]
result# (do ~@body) (try
elapsed# (- (System/nanoTime) start-time#)] ~@body
(swap! *pdata* #(assoc % name# (conj (% name# []) elapsed#))) (finally
result#)))) (let [elapsed# (- (System/nanoTime) start-time#)]
(swap! *pdata* #(assoc % name# (conj (% name# []) elapsed#))))))))))
(defmacro p [name & body] `(pspy ~name ~@body)) ; Alias (defmacro p [name & body] `(pspy ~name ~@body)) ; Alias