Slf4j, slf4jlog4j
Java Simple log appearance (Simple Logging Fa C ade for Java, slf4j) is another log framework (such as java. util. A simple appearance or abstraction of logging, logback, and log4j. Different log frameworks are used with the same API, and your favorite log frameworks are inserted during deployment.
Slf4j dependencies are slf4j-api.jar, and slf4j does not perform any operations by default if no framework is bound on the class path.
Hello World
The following example illustrates how to output "Hello world" in slf4j in the simplest way ".
Import org. slf4j. Logger; Import org. slf4j. LoggerFactory; Public class HelloWorld { Public static void main (String [] args ){ Logger logger = LoggerFactory. getLogger (HelloWorld. class ); Logger.info ("Hello World "); } } |
If you only add a slf4j-api.jar to a path, the following information appears after running:
SLF4J: Failed to load class "org. slf4j. impl. StaticLoggerBinder ". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. |
Because slf4j is not bound to any log framework, if you add the slf4j-simple.jar to the class path:
- Slf4j-api-1.7.12.jar
- Slf4j-simple-1.7.12.jar
After compilation, the following output is displayed on the console:
[Main] INFO cn. ac. dicp. slf4j. HelloWorld-Hello World |
Typical use Mode
The following simple code demonstrates the typical use mode of slf4j.
Import org. slf4j. Logger; Import org. slf4j. LoggerFactory; Public class Wombat { Final Logger logger = LoggerFactory. getLogger (Wombat. class ); Integer t; Integer oldT; Public void setTemperature (Integer tem ){ OldT = t; T = tem; Logger. debug ("temperature set to {}. Old temperature was {}.", toString (), oldT ); If (tem. intValue ()> 50 ){ Logger.info ("Temperature has risen abve 50 degrees ."); } } } |
Note the above '{}'.
Bind log framework
Slf4j supports multiple log frameworks:
Slf4j-log4j12-1.7.12.jar |
Bind log4j 1.2, a widely used log framework. Add log4j. jar. |
Slf4j-jdk14-1.7.12.jar |
Bind java. util. logging, also known as JDK 1.4 logging. |
Slf4j-nop-1.7.12.jar |
Bind NOP and silently discard all logs. |
Slf4j-simple-1.7.12.jar |
Bind simple implementation and output all logs to System. err. Only information output with a level higher than or equal to INFO. |
Slf4j-jcl-1.7.12.jar |
Bind Jakarta Commons Logging. |
Logback-classic-1.0.13.jar |
Logback-core-1.0.13.jar required. |
In addition to slf4j, native implementation also has its own bind mining project. For example, logback implements slf4j locally. The ch. qos. logback. classic. Logger class of logback directly implements the org. slf4j. Logger interface of slf4j. Therefore, the memory and computing workload used in combination with slf4j and logback are almost zero.
Change the log framework to directly change the package of the class path, such as replacing the slf4j-jdk14-1.7.12.jar with a slf4j-log4j12-1.7.12.jar. Slf4j can only bind one framework at a time. Do not place two or more connection jar files in the path.
Slf4j interfaces and adapters are extremely simple.
Libraries
The authors of those widely used components and libraries use the slf4j interface to avoid the log framework that end users must use. Users can select their favorite log framework during deployment, change the corresponding connection jar. This method is simple and effective.