taoensso / timbre

Pure Clojure/Script logging library
https://www.taoensso.com/timbre
Eclipse Public License 1.0
1.44k stars 171 forks source link

Nodejs missing stacktrace #295

Closed nenadalm closed 4 years ago

nenadalm commented 4 years ago

Timbre doesn't print stacktrace of the error:

src/app/core.cljs:

(ns app.core
  (:require
   [taoensso.timbre :as timbre]))

(try
  (throw (js/Error. "line6"))
  (catch :default e
    (println "console.log version:")
    (.log js/console e)

    (println)
    (println "timbre/error version:")
    (timbre/error e "message")))

shell:

$ node target/out/app.js 
console.log version:
Error: line6
    at Object.<anonymous> (/var/www/html/nenadalm/timbre-issues/target/out/app/core.cljs:6:10)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at global.CLOSURE_IMPORT_SCRIPT (/var/www/html/nenadalm/timbre-issues/target/out/goog/bootstrap/nodejs.js:88:13)
    at Object.goog.importScript_ (/var/www/html/nenadalm/timbre-issues/target/out/goog/base.js:951:9)

timbre/error version:
ERROR [app.core:13] - message
Error: line6
nenadalm commented 4 years ago

It looks like it would be better to use (.-stack err) instead of (str err) where supported:

src/app/core.cljs:

(ns app.core
  (:require
   [taoensso.timbre :as timbre]))

(set! timbre/stacktrace
      (fn stacktrace
        ([err     ] (stacktrace err nil))
        ([err opts]
         (or (.-stack err) (str err)))))

(try
  (throw (js/Error. "line6"))
  (catch :default e
    (println "console.log version:")
    (.log js/console e)

    (println)
    (println "timbre/error version:")
    (timbre/error e "message")))

shell:

$ node target/out/app.js 
console.log version:
Error: line6
    at Object.<anonymous> (/var/www/html/nenadalm/timbre-issues/target/out/app/core.cljs:12:10)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at global.CLOSURE_IMPORT_SCRIPT (/var/www/html/nenadalm/timbre-issues/target/out/goog/bootstrap/nodejs.js:88:13)
    at Object.goog.importScript_ (/var/www/html/nenadalm/timbre-issues/target/out/goog/base.js:951:9)

timbre/error version:
ERROR [app.core:19] - message
Error: line6
    at Object.<anonymous> (/var/www/html/nenadalm/timbre-issues/target/out/app/core.cljs:12:10)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at global.CLOSURE_IMPORT_SCRIPT (/var/www/html/nenadalm/timbre-issues/target/out/goog/bootstrap/nodejs.js:88:13)
    at Object.goog.importScript_ (/var/www/html/nenadalm/timbre-issues/target/out/goog/base.js:951:9)