Dear Apache Commons JEXL developers,

I'm writing to propose migrating the Commons JEXL project from Apache Commons 
Logging

to SLF4J as the default logging facade.




-----------------------------------------------------------------------------------------

Apache Commons JEXL currently uses Apache Commons Logging as its default 
logging framework. While Commons Logging has served well historically, the Java 
logging landscape has evolved significantly. Many modern frameworks and 
applications now prefer and default to SLF4J (Simple Logging Facade for Java).

Why SLF4J is Recommended:


Modern Ecosystem Alignment: Most contemporary Java frameworks (Spring Boot, 
Hibernate, etc.) have migrated to or recommend SLF4J as their logging facade.



Superior Performance: SLF4J's parameterized logging (logger.debug("User {} 
logged in", username)) avoids the string concatenation overhead required by 
Commons Logging's isDebugEnabled() pattern.



Flexible Backend Support: SLF4J supports multiple logging implementations 
(Logback, Log4j2, JDK logging) without requiring code changes.



Better API Design: SLF4J provides a cleaner API with no checked exceptions and 
supports MDC (Mapped Diagnostic Context) for advanced logging scenarios.



Industry Standard: SLF4J has become the de facto standard for logging facades 
in modern Java applications.


Migration Benefits for JEXL:

Better Integration: Projects using SLF4J won't need bridging dependencies when 
using JEXL.

Performance Improvements: Parameterized logging in SLF4J can provide 
performance benefits.

Future-Proofing: Aligns JEXL with modern Java development practices.

Backward Compatibility: Existing projects can continue using Commons Logging 
via SLF4J's bridge (jcl-over-slf4j).

Proposed Approach:

Replace Commons Logging dependencies with SLF4J API

Update code to use SLF4J's parameterized logging patterns

Provide backward compatibility documentation

Backward Compatibility Note: SLF4J provides excellent backward compatibility. 
Projects currently using JEXL with Commons Logging can simply add the 
jcl-over-slf4j bridge dependency to route all Commons Logging calls through 
SLF4J without changing their logging configuration.

Willingness to Contribute: If the maintainers agree with this proposal, I would 
be happy to contribute the necessary code changes via a pull request. This 
would include:

Dependency updates in pom.xml

Code migration from Commons Logging to SLF4J patterns

Documentation updates

Test verification

References:

SLF4J Manual: http://www.slf4j.org/manual.html

Migration Guide: http://www.slf4j.org/legacy.html

jcl-over-slf4j bridge: Provides transparent redirection of Commons Logging 
calls to SLF4J

Thank you for considering this proposal to modernize JEXL's logging 
infrastructure.














单红宇
[email protected]

Reply via email to