public String formatVerboseMessage(LogRecord logRecord, String formattedMsg, boolean useResourceBundle) {
        Object[] logParams = logRecord.getParameters();
        if (logParams != null) {
            // Loop through the parameters looking for those that are formatted
            // differently in verbose messages.
            for (int i = 0; i < logParams.length; i++) {
                Object logParam = logParams[i];
                if (logParam != null) {
                    Object newLogParam = formatVerboseObj(logParam);
                    if (newLogParam != null) {
                        // We found a parameter with verbose formatting.

                        // Copy the [0-i) parameters unchanged.
                        Object[] newLogParams = new Object[logParams.length];
                        System.arraycopy(logParams, 0, newLogParams, 0, i);

                        // Copy the reformatted i'th parameter.
                        newLogParams[i] = newLogParam;

                        // Loop over the rest of the parameters, reformatting
                        // or copying unchanged as needed.
                        for (i++; i < logParams.length; i++) {
                            logParam = logParams[i];
                            if (logParam != null) {
                                newLogParam = formatVerboseObj(logParam);
                                newLogParams[i] = newLogParam != null ? newLogParam : logParam;
                            }
                        }

                        return formatMessage(logRecord, newLogParams, useResourceBundle);
                    }
                }
            }
        }

        // No reformatting necessary.  Use the already formatted message, or
        // format it now if necessary.
        if (formattedMsg == null) {
            formattedMsg = formatMessage(logRecord, logParams, useResourceBundle);
        }

        return formattedMsg;
    }
public String formatVerboseMessage ( LogRecord logRecord , String formattedMsg , boolean useResourceBundle ) { Object [ ] logParams = logRecord . getParameters ( ) ; if ( logParams != null ) { for ( int i = 0 ; i < logParams . length ; i ++ ) { Object logParam = logParams [ i ] ; if ( logParam != null ) { Object newLogParam = formatVerboseObj ( logParam ) ; if ( newLogParam != null ) { Object [ ] newLogParams = new Object [ logParams . length ] ; System . arraycopy ( logParams , 0 , newLogParams , 0 , i ) ; newLogParams [ i ] = newLogParam ; for ( i ++ ; i < logParams . length ; i ++ ) { logParam = logParams [ i ] ; if ( logParam != null ) { newLogParam = formatVerboseObj ( logParam ) ; newLogParams [ i ] = newLogParam != null ? newLogParam : logParam ; } } return formatMessage ( logRecord , newLogParams , useResourceBundle ) ; } } } } if ( formattedMsg == null ) { formattedMsg = formatMessage ( logRecord , logParams , useResourceBundle ) ; } return formattedMsg ; }
Format a verbose message. This produces the same result
as {@link #formatMessage} unless any parameters need to be modified
by {@link #formatVerboseObj}. The previously formatted message may be
reused if specified and no parameters need to be modified.

@param logRecord
@param formattedMsg the result of {@link #formatMessage}, or null if that
method was not previously called
@param useResourceBundle
@return the formatted message