Слайд 1SLF4J project
Ceki Gülcü
ceki@qos.ch
Слайд 2Jakarta Commons Logging (JCL)
Same problem domain
Well-established library
So why do we
re-invent the wheel?
Because details of implementation matter.
Слайд 3SLF4J
SLF4J: Simple Logging Façade for Java
Problem definition:
Abstract logging frameworks
Automatically/dynamically select
underlying logging framework (in JCL)
Manually/statically select underlying logging framework (in
SLF4J)
Слайд 5The API
1: import org.slf4j.Logger;
2: import org.slf4j.LoggerFactory;
3:
4: public class Wombat {
5:
6: final
Logger logger = LoggerFactory.getLogger(Wombat.class);
7: Integer t;
8: Integer oldT;
9:
10: public void setTemperature(Integer temperature) {
11:
12: oldT = t;
13: t = temperature;
14:
15: logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
16:
17: if(temperature.intValue() > 50) {
18: logger.info("Temperature has risen above 50 degrees.");
19: }
20: }
21: }
Слайд 6Parameterized logging
old style:
if(logger.isDebugEnabled()) {
logger.debug("Hello "+name);
}
new style:
logger.debug("Hello {}", name);
Слайд 7Other supported features
MDC (for log4j, logback and j.u.l)
Markers
Слайд 11Conclusion
Simplicity is powerful.
-- Evan Williams
Robustness, particularly in the context
of logging, is a killer feature and simplicity implies robustness.
Or,
come up with minimal requirements and write just enough code to satisfy them.