PROBLEM
My personal goal of 2017 is to write less useless-yet-neccessary code, such as initializing a logger:-
import org.slf4j.Logger import org.slf4j.LoggerFactory class MyClass { static Logger LOGGER = LoggerFactory.getLogger(MyClass) static void main(String[] args) { LOGGER.debug('TEST') } }
SOLUTION
Groovy provides several useful annotations that allow us to inject a logger instance into the class.
Here’s a rewrite of the above example:-
import groovy.util.logging.Slf4j @Slf4j class MyClass { static void main(String[] args) { log.debug('TEST') } }
If we insist of using the same variable ( LOGGER
), we can do this:-
import groovy.util.logging.Slf4j @Slf4j(value = 'LOGGER') class MyClass { static void main(String[] args) { LOGGER.debug('TEST') } }
We can also use @Log
for Java Util Logger, @Log4j
for Log4j and @Commons
for Apache Common Logging.