2012-09-28 20 views
6

En la última versión (0.2.4) de tools.logging, al iniciar sesión con (error alguna excepción), solo se registra el mensaje de excepción. Depende de tener impreso el seguimiento de la pila cuando se registra una excepción. Imprimir la excepción a stderr o stdout no es una opción.Clojure tools.logging no logging stacktrace

Por lo que puedo ver en el source, (error ...) toma una excepción como primer argumento.

(log/error throwable error-message) 

¿Qué puedo hacer para incluir los restos de la pila al iniciar sesión?

Respuesta

3

La firma de error es:

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

lo que significa que con sólo 1 PARAM (como en (error some-exception)), el parámetro es el mensaje (que en su caso es el toString de algunos-excepción).

Si desea registrar la StackTrace necesita un segundo mensaje de parámetro como:

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

o

(error ex ex) 
+0

(ex error "algún mensaje") es lo que he intentado. No imprime el seguimiento de la pila. – Odinodin

+0

Hola Odinodin, funciona para mí. Me acabo de dar cuenta de que usted afirma que está utilizando la versión 0.2.5, pero esa versión aún no existe. La última versión lanzada es 0.2.4. – DanLebrero

+0

Lo siento, tienes razón, estoy usando la versión 0.2.4 – Odinodin