[
https://issues.apache.org/jira/browse/LOGGING-136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15375188#comment-15375188
]
Gary Gregory commented on LOGGING-136:
--------------------------------------
I think Commons Logging should be deprecated in favor of Apache's own Log4j 2
logging API, which supports Java 8 lambda calls (but only requires Java 7): I
would use Log4j 2's {{log4-api}} module and pick an suitable implementation
(like Log4j's own {{log4j-core}}). Log4j 2 provides separation between the API
and different plugin implementations. Please see
https://logging.apache.org/log4j/2.x/
With Log4j 2, you can say:
{code:java}
logger.trace("Some long-running operation returned {}", () ->
expensiveOperation());
{code}
See https://logging.apache.org/log4j/2.x/manual/api.html and
https://logging.apache.org/log4j/2.x/log4j-api/apidocs/index.html
If you want to try it, use the following in your POM instead of Commons Logging:
{code:xml}
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
{code}
> API Enhancements: 'String.format(String, Object...)' Functionality & Delegate
> Convenience Methods
> -------------------------------------------------------------------------------------------------
>
> Key: LOGGING-136
> URL: https://issues.apache.org/jira/browse/LOGGING-136
> Project: Commons Logging
> Issue Type: Improvement
> Affects Versions: 1.1.1
> Environment: N/A
> Reporter: Daniel Siviter
> Labels: api, api-addition
> Fix For: 2.0
>
> Attachments: commons-logging-1.1.1-src.rar,
> commons-logging-1.1.1.jar, site.rar
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> Improvements to the API to allow convenience methods for performing
> {{String.format(String, Object...)}} and allow access to the internal logging
> delegate.
> Firstly, to add the {{String#format(String, Object...)}} functionality modify
> the methods (note: only {{#trace(...)}} shown):
> {{void trace(Object message, Object... args);}}
> {{void trace(Object message, Throwable t, Object... args);}}
> This would allow compatiblity with previous versions of the API (although I
> believe they would still require a re-compile) and help tidy up code.
> Secondly, to obtain access to the internal instance of a logger the addition
> of a {{#getDeletegate()}} method.
> I can supply the code if required.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)