2012-09-28 13 views
6

Nella versione più recente (0.2.4) di tools.logging, quando si effettua l'accesso con (errore un'eccezione), viene registrato solo il messaggio di eccezione. Dipendo dal fatto che la traccia dello stack viene stampata quando viene registrata un'eccezione. La stampa dell'eccezione su stderr o stdout non è un'opzione.Strumenti Clojure.log non registra stacktrace

Per quanto posso vedere nel source, (errore ...) accetta un'eccezione come primo argomento.

(log/error throwable error-message) 

Cosa posso fare per includere le tracce dello stack durante la registrazione?

risposta

3

La firma di errore è:

(defmacro error 
    "Error level logging using print-style args." 
    {:arglists '([message & more] [throwable message & more])} 
    [& args] 
    `(logp :error [email protected])) 

il che significa che con appena 1 param (come in (error some-exception)), il parametro è il messaggio (che nel tuo caso è la toString di qualche-eccezione).

Se si desidera registrare lo stacktrace avete bisogno di un secondo messaggio param come:

(def ex (RuntimeException. "ex")) 
(error ex "Something broke!") 

o

(error ex ex) 
+0

(errore di ex "qualche-messaggio") è quello che ho provato. Non stampa la traccia dello stack. – Odinodin

+0

Ciao Odinodin, funziona per me. Mi sono appena reso conto che dichiari di utilizzare la versione 0.2.5, ma quella versione non esiste ancora. L'ultima versione rilasciata è 0.2.4. – DanLebrero

+0

Scusa, hai ragione, sto usando la versione 0.2.4 – Odinodin