[ 
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)

Reply via email to