1

I use SLF4J and Logback in my projects, and typically do all my logging using tools.logging. Every time I have to use a library that uses timbre, I have never been able to get the right code added to my project to see anything logged.

What is the minimum configuration I need in my project to make sure that timbre logging is active and make timbre redirect all logging to tools.logging (so that the timbre logging will appear in my logs)?

  1. I've tried adding the following to my main namespace:

    (timbre/merge-config!
     {:level :info
      :appenders {:tools-logging (com.palletops.log-config.timbre.tools-logging/make-tools-logging-appender {})}})
    

    This attempts to use the timbre->tools.logging bridge from the https://github.com/palletops/log-config project.

    But I never see any logging.

  2. If I take out the :appenders section above, I get nothing logged to the console (shouldn't timbre log to the console by default?).

  3. If I use the following, I still see nothing:

    (timbre/merge-config!
     {:level :info
      :appenders {:standard-out {:enabled? true}}})
    

    even though I know that the library I'm using is make multiple calls to taoensso.timbre/error

So what am I doing wrong here?

joelittlejohn
  • 11,665
  • 2
  • 41
  • 54

1 Answers1

1

It is not the latest version of Timbre, but I have a demo here:

~/expr/demo-timbre > 
~/expr/demo-timbre > lein run
Hello, World!
~/expr/demo-timbre > cat log.txt 
2018-Sep-28 13:02:12 -0700 brandy DEBUG [log-timbre.core] - Hello, Timbre! debug
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Hello, Timbre! info
2018-Sep-28 13:02:12 -0700 brandy WARN [log-timbre.core] - Hello, Timbre! warn
2018-Sep-28 13:02:12 -0700 brandy ERROR [log-timbre.core] - Hello, Timbre! error
2018-Sep-28 13:02:12 -0700 brandy FATAL [log-timbre.core] - Hello, Timbre! fatal
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Arg-1
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Arg-1 :Arg-2
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Arg-1 :Arg-2 [Arg-3]
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Arg-1 :Arg-2 [Arg-3] {:Arg 4}
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Spy returns the last value {:a 1}
2018-Sep-28 13:02:12 -0700 brandy DEBUG [log-timbre.core] - (* 6 7) 42
2018-Sep-28 13:02:12 -0700 brandy WARN [log-timbre.core] - (* 6 7) 42
2018-Sep-28 13:02:12 -0700 brandy ERROR [log-timbre.core] - optional message {:a 1}
2018-Sep-28 13:02:12 -0700 brandy ERROR [log-timbre.core] - Any extra :items {:go here}
java.lang.Exception: Doh!
         log-timbre.core/-main                          core.clj:   58
       clojure.lang.Var.invoke                          Var.java:  375
                    user/eval5  form-init4075346110151967627.clj:    1
    clojure.lang.Compiler.eval                     Compiler.java: 6768
    clojure.lang.Compiler.eval                     Compiler.java: 6758
    clojure.lang.Compiler.load                     Compiler.java: 7195
clojure.lang.Compiler.loadFile                     Compiler.java: 7151
      clojure.main/load-script                          main.clj:  274
         clojure.main/init-opt                          main.clj:  279
       clojure.main/initialize                          main.clj:  307
         clojure.main/null-opt                          main.clj:  342
             clojure.main/main                          main.clj:  420
    clojure.lang.RestFn.invoke                       RestFn.java:  421
       clojure.lang.Var.invoke                          Var.java:  383
clojure.lang.AFn.applyToHelper                          AFn.java:  156
      clojure.lang.Var.applyTo                          Var.java:  700
             clojure.main.main                         main.java:   37

2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - (my-fn) =>  42
2018-Sep-28 13:02:12 -0700 brandy INFO [log-timbre.core] - Profiling: :log-timbre.core/Arithmetic
                         Id      nCalls       Min        Max       MAD      Mean   Time% Time
:log-timbre.core/slow-sleep         100     2.0ms      2.0ms    13.0μs     2.0ms      60 208.0ms
:log-timbre.core/fast-sleep         100     1.0ms      1.0ms     8.0μs     1.0ms      31 108.0ms
       :log-timbre.core/div         100    36.0μs    214.0μs    16.0μs    51.0μs       1 5.0ms
      :log-timbre.core/mult         100    22.0μs    197.0μs    13.0μs    34.0μs       1 3.0ms
       :log-timbre.core/add         100    16.0μs    345.0μs    16.0μs    32.0μs       1 3.0ms
       :log-timbre.core/sub         100    16.0μs    198.0μs    13.0μs    28.0μs       1 3.0ms
                 Clock Time                                                          100 345.0ms
             Accounted Time                                                           96 331.0ms
Alan Thompson
  • 29,276
  • 6
  • 41
  • 48