Reputation: 10141
There are questions (here and here) about what library to use for logging in Scala, but I'd like to ask a more specific version of the question.
When you're writing a library - ie some code that will become part of lots of different applictions - you don't have as much freedom to choose what you'd like to use. If you use a different logging solution from the one used in the rest of the application, then the poor application developer has to look in two (or more) places for his debugging information. So ideally you want to use something compatible with the most used solutions.
Of the many logging solutions out there, a lot of them seem to go via slf4j. Does that mean any solution using slf4j would be best? Or slf4s?
Upvotes: 3
Views: 611
Reputation: 18167
Yes, use SLF4J or a Scala wrapper around it. That way your clients get to choose the actual implementation of the logging. From this perspective it doesn't make any difference if you use a wrapper or the SLF4J API directly.
The only real alternative is common.logging, but it has been effectively superseded.
Upvotes: 5
Reputation: 1
I would recommend log4j. It is quite popular and very flexible. I use it like this:
java -Dlog4j.configuration=log4j.txt -cp .:app_name.jar com.your.program.Main
with the config file in the local dir as:
log4j.rootLogger=WARN, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c - %m%n
log4j.logger.com.your.program=DEBUG
Upvotes: -1