When you use slf4j and want to use it with log4j, you just put the log4j jar file in classpath and without any configuration slf4j understand it's impl. How slf4j do that? what is the mechanism here?
1
There are 1 answers
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in LOG4J
- Purpose of setting debug="false" in log4j at configuration level
- log4j-api 2.20.0 causing : java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.util.PropertiesUtil
- log4j2 CronTriggeringPolicy results incorrect date in filename along with SizeBasedTriggeringPolicy
- Log4j is not writing logs into file
- How to print hudi logs in aws emr serverless application
- Is there a way to color-code Log4J2 in Windows Powershell?
- Not able to change the logging level log4j on Payara server
- How to implement log4j in IBM BPM?
- How can I change logger pattern?
- Log4J 2 - Each run has its own unique folder to store logs, and automatically delete old logs/folders
- Disable default logging in /opt/engine.log
- Native Compile java.lang.NoSuchMethodException: org.apache.logging.log4j.message.DefaultFlowMessageFactory.<init>() exception for apache-poi
- log4j 1.2.x outputs JSON format
- log4j java - dynamic logger creation in multi-thread environment
- Log4j is not accessible in eclipse
Related Questions in SLF4J
- Purpose of setting debug="false" in log4j at configuration level
- Logs file getting created but logs are not getting written to it in springboot 3 war deployed on Tomcat 10.1.19
- Logging issues on an apache camel spring boot aplication
- How to view PMD Errors?
- Spring application packaged in jar is ignoring configured log level
- Setting root log level via command line for log4j2
- WARN StatusConsoleListener The key MDC_KEY was used in both the string and stack-valued MDC
- Log JSONObject in java without unnecessary backslashes(\)
- Lombok installed but still getting `Cannot resolve symbol 'Slf4j'`
- Logback: one file for two appenders
- How to stop slf4j printing a pointless information message at startup?
- Maven/Java/Helidon MP: Log4j2.xml <JSONLayout> causing conflict with custom annotation processor
- Slf4j is not showing the logs on my local server
- Read slf4j property values using java class
- Why is there no output in Scala + Akka Typed project?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
First let me clarify a few points:
It this last point that's important. Within a project you may use a number of 3rd party APIs each of which use one of the popular logging APIs (Log4J, Commons, JDK, etc). This is a pain because you have to configure each individually.
The solution is to use SLF4J, which provides reimplementations for the legacy logging APIs, which delegate to SLF4J. Hence when whichever 3rd party APIs you use makes a logging call, that call is delegated to SLF4J by the SLF4J implementation of a particular logging API.
And so the mechanism being used is delegation combined with the fact that Java inherently uses the first class it loads from the classpath (in this case the reimplementation of a particular logging API). So as long as the Logging classes in the reimplementation match the definition the calling code was compiled against, the calling code is none the wiser.