Skip to content

Commit

Permalink
Merge pull request #72 from apa512/add-logging
Browse files Browse the repository at this point in the history
Add clojure.tools.logging and logging statements
  • Loading branch information
danielcompton committed Aug 6, 2015
2 parents 1582805 + 43746a4 commit 5587bda
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 3 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -3,6 +3,8 @@
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com).

## [Unreleased]
### Added
- Added clojure.tools.logging support. [#72](https://github.com/apa512/clj-rethinkdb/pull/72)

### Changed
- Update dependency to Clojure 1.7. [#59](https://github.com/apa512/clj-rethinkdb/pull/59)
Expand Down
2 changes: 2 additions & 0 deletions project.clj
Expand Up @@ -11,9 +11,11 @@
:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
[org.clojure/data.json "0.2.6"]
[org.clojure/tools.logging "0.3.1"]
[rethinkdb-protobuf "2.0.5-20150720.090807-2"]
[com.google.protobuf/protobuf-java "2.6.1"]
[clj-time "0.10.0"]]
:profiles {:dev {:dependencies [[ch.qos.logback/logback-classic "1.1.3"]]}}
:release-tasks [["vcs" "assert-committed"]
["change" "version" "leiningen.release/bump-version" "release"]
["vcs" "commit"]
Expand Down
4 changes: 3 additions & 1 deletion src/rethinkdb/core.clj
@@ -1,5 +1,6 @@
(ns rethinkdb.core
(:require [rethinkdb.net :refer [send-int send-str read-init-response send-stop-query make-connection-loops close-connection-loops]])
(:require [rethinkdb.net :refer [send-int send-str read-init-response send-stop-query make-connection-loops close-connection-loops]]
[clojure.tools.logging :as log])
(:import [clojure.lang IDeref]
[java.io Closeable DataInputStream DataOutputStream]
[java.net Socket]))
Expand Down Expand Up @@ -91,4 +92,5 @@
:token token}
(make-connection-loops in out))))
(catch Exception e
(log/error e "Error connecting to RethinkDB database")
(throw (ex-info "Error connecting to RethinkDB database" {:host host :port port :auth-key auth-key :db db} e)))))
13 changes: 11 additions & 2 deletions src/rethinkdb/net.clj
@@ -1,6 +1,7 @@
(ns rethinkdb.net
(:require [clojure.data.json :as json]
[clojure.core.async :as async]
[clojure.tools.logging :as log]
[rethinkdb.query-builder :refer [parse-query]]
[rethinkdb.types :as types]
[rethinkdb.response :refer [parse-response]]
Expand Down Expand Up @@ -63,13 +64,16 @@
recv-loop (async/go-loop []
(when (try
(let [resp (read-response* in)]
(log/trace "Received raw response %s" resp)
(async/>! recv-chan resp))
(catch java.net.SocketException e
(log/error e "Error while receiving response, closing recv-loop.")
false))
(recur)))
;; Send loop
send-loop (async/go-loop []
(when-let [query (async/<! send-chan)]
(log/trace "Sending raw query %s")
(write-query out query)
(recur)))]
;; Return as map to merge into connection
Expand Down Expand Up @@ -105,7 +109,7 @@
(concat query [{:db [(types/tt->int :DB) [db]]}])
query)
json (json/write-str query)
{type :t resp :r} (send-query* conn token json)
{type :t resp :r :as json-resp} (send-query* conn token json)
resp (parse-response resp)]
(condp get type
#{1} (first resp) ;; Success Atom, Query returned a single RQL datatype
Expand All @@ -117,13 +121,18 @@
(do
(swap! (:conn conn) update-in [:waiting] #(conj % token))
(Cursor. conn token resp)))
(throw (Exception. (str (first resp)))))))
(let [ex (ex-info (str (first resp)) json-resp)]
(log/error ex)
(throw ex)))))

(defn send-start-query [conn token query]
(log/debugf "Sending start query with token %d, query: %s" token query)
(send-query conn token (parse-query :START query)))

(defn send-continue-query [conn token]
(log/debugf "Sending continue query with token %d" token)
(send-query conn token (parse-query :CONTINUE)))

(defn send-stop-query [conn token]
(log/debugf "Sending stop query with token %d" token)
(send-query conn token (parse-query :STOP)))
14 changes: 14 additions & 0 deletions test-resources/logback-test.xml
@@ -0,0 +1,14 @@
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="debug">
<appender-ref ref="STDOUT"/>
</root>
</configuration>

0 comments on commit 5587bda

Please sign in to comment.