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
- Azure VM: Single disk (filesystem) greater than 1023 GB?
- Backup strategy for build tool hosted on Azure VM
- New-AzureQuickVM not creating VM on exsisting Cloud Service?
- Ping Azure VM in same subnet using VM name
- 'Your credentials did not work' in MS Azure
- Installing Azure powershell in an azure Virtual Machine
- Azure Virtual Network Custom DNS Server
- Extend On-premise AD to Azure
- How can I use Azure-provided DNS for Resource Manager VMs?
- Find out data traffic coming in and going out through azure VM
Related Questions in LOG4J
- Azure VM: Single disk (filesystem) greater than 1023 GB?
- Backup strategy for build tool hosted on Azure VM
- New-AzureQuickVM not creating VM on exsisting Cloud Service?
- Ping Azure VM in same subnet using VM name
- 'Your credentials did not work' in MS Azure
- Installing Azure powershell in an azure Virtual Machine
- Azure Virtual Network Custom DNS Server
- Extend On-premise AD to Azure
- How can I use Azure-provided DNS for Resource Manager VMs?
- Find out data traffic coming in and going out through azure VM
Related Questions in SLF4J
- Azure VM: Single disk (filesystem) greater than 1023 GB?
- Backup strategy for build tool hosted on Azure VM
- New-AzureQuickVM not creating VM on exsisting Cloud Service?
- Ping Azure VM in same subnet using VM name
- 'Your credentials did not work' in MS Azure
- Installing Azure powershell in an azure Virtual Machine
- Azure Virtual Network Custom DNS Server
- Extend On-premise AD to Azure
- How can I use Azure-provided DNS for Resource Manager VMs?
- Find out data traffic coming in and going out through azure VM
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?
Popular Tags
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.