Слайд 2

Jakarta Commons Logging (JCL) Same problem domain Well-established library So why

Jakarta Commons Logging (JCL)

Same problem domain
Well-established library
So why do we re-invent

the wheel?

Because details of implementation matter.

Слайд 3

SLF4J SLF4J: Simple Logging Façade for Java Problem definition: Abstract logging

SLF4J

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)

Слайд 4

Слайд 5

The API 1: import org.slf4j.Logger; 2: import org.slf4j.LoggerFactory; 3: 4: public

The 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: }
Слайд 6

Parameterized logging old style: if(logger.isDebugEnabled()) { logger.debug("Hello "+name); } new style: logger.debug("Hello {}", name);

Parameterized logging

old style:
if(logger.isDebugEnabled()) {
logger.debug("Hello "+name);
}
new style:
logger.debug("Hello

{}", name);
Слайд 7

Other supported features MDC (for log4j, logback and j.u.l) Markers

Other supported features
MDC (for log4j, logback and j.u.l)
Markers

Слайд 8

Bridging legacy systems

Bridging legacy systems

Слайд 9

Using SLF4J:

Using SLF4J:

Слайд 10

Migrator

Migrator