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.
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:
This will produce logs 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 terrible
The 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: