Back in the late 90’ties when I started programming JAVA there were no standard way of logging in JAVA programs.
One usually just used
Exception.printStacktrace(). Often applications would build homemade logging frameworks that would also log information about timestamp etc, possibly logging to files and whatnot.
Later lots of different logging frameworks came about, e.g. JLog, log4j, commons-logging just to name a few. Larger application frameworks would supply their own logging framework; sometimes just repackaged versions of commons-logging or log4j.
When jdk 1.4 (a.k.a J2SE) was released, it contained a standard logging framework, and as far as I remember, this was actually based on the IBM Aphaworks developed JLog framework.
I thought that people would now stop using other third-party logging frameworks and just use jdk-logging, but no, a lot of people were angry that the JLog framework was chosen (and not log4j) and people would continue to use log4j. Other would use commons-logging, giving a simpler API and a “lightweight” solution towards not actually deciding on which logging framework to use.
Even another logging framework would see the day, because some people didn’t agree with neither jdk-logging, log4j or commons-logging and would still have the possibility to actually use either as the logging implementation: slf4j (Simple Logging Facade for Java (SLF4J)).
Personally, when I’m writing JAVA applications, I try to use as few third-party libraries as possible and use whatever the platform provides me. This in most cases means I will use jdk-logging as logging framework.