Having investigated a few options I have decided on SLF4J + Logback + Grizzled. The project I am currently on uses Scalatra - this matches their solution.
Three libraries?? That sounds overkill but it is in fact very simple.
SLF4J + Logback are common place in Java projects. SLF4J is logging facade - basically a set of interfaces to program to where as Logback is an implementation you put on your classpath at runtime. There are other implementations of SLF4J you can use such as Log4J. Grizzled is a Scala wrapper around SLF4J to give it Scala like usage.
Three libraries?? That sounds overkill but it is in fact very simple.
SLF4J + Logback are common place in Java projects. SLF4J is logging facade - basically a set of interfaces to program to where as Logback is an implementation you put on your classpath at runtime. There are other implementations of SLF4J you can use such as Log4J. Grizzled is a Scala wrapper around SLF4J to give it Scala like usage.
Having worked on many Java projects that use SLF4J + Logback I'm used to seeing lines at the top of files that look like this:
private static final Logger LOGGER = LoggerFactory.getLogger(SomeClass.class)
Fortunately Grizzled-SLF4J + traits help here.
Mixing in the Grizzled Logging trait allows you to write logging code like this:
09:57:11.169 [main] INFO com.batey.examples.SomeClass - Some information 09:57:11.172 [main] ERROR com.batey.examples.SomeClass - Something terribleThe grizzled trait uses your class name as the logger name. Job done with less boilerplate than Java!
Everything you need s on Maven central so can be added to your pom or sbt dependencies:
Grizzled: Grizzled
Logback: Logback
2 comments:
I believe typesafe ScalaLogging offers a better solution:
https://github.com/typesafehub/scala-logging
It should be more efficient as it will not create a closure for passing the by-name parameter.
Post a Comment