http://bugzilla.slf4j.org/show_bug.cgi?id=184

           Summary: Log array contents if only one parameter is specified in
                    log string
           Product: SLF4J
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: Core API
        AssignedTo: [email protected]
        ReportedBy: [email protected]


Hello,

When using Java5 var-args which are represented as an array, slf4j logs only
the first item in the array (which is correct as per documentation, just that
it's not very intuitive).

Example:
void getFilteredData(String... filterValues) {
    log.debug("Getting data, filtering using the following settings: {}",
filterValues);
    return dao.doSomething();
}

What happens is that only the first item is logged, insted of all the items
being logged. The current work-around for this is to have the following method
call:
    log.debug(".... {} {}", "", myArray); // note the first empty log parameter

I would suggest enhancing the framework to automatically log the array content
if only ONE {} parameter is specified in the log string. In this case:
    log.debug("... {}", myArray); // logs full array content, not only first
item
    log.debug("... {}={}"); // logs as per current algorithm - first two items

I believe it is safe to assume that people will use the log.debug(array) method
only when they have more than two parameters to show, thus - if only one
parameter is used, it's only reasonable that the FULL content of the passed
object is logged, no matter the type.

Thanks,
Dima


-- 
Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
_______________________________________________
slf4j-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/slf4j-dev

Reply via email to