private void log()

in src/main/java/org/apache/sling/launchpad/base/impl/DefaultStartupHandler.java [318:356]


    private void log(final ServiceReference<?> sRef, final int level, final String msg, final Throwable t) {
        boolean loggedWithService = false;
        if ( this.logService == null ) {
            final ServiceReference<?> ref = this.bundleContext.getServiceReference("org.osgi.service.log.LogService");
            if ( ref != null ) {
                final Object ls = this.bundleContext.getService(ref);
                if ( ls != null ) {
                    final Class<?>[] formalParams = {
                            ServiceReference.class,
                            Integer.TYPE,
                            String.class,
                            Throwable.class
                        };

                    try {
                        final Method logMethod = ls.getClass().getMethod("log", formalParams);
                        logMethod.setAccessible(true);
                        logService = new Object[] { ls, logMethod };
                    } catch (final NoSuchMethodException ex) {
                        // no need to log
                    }
                }
            }
        }
        if ( this.logService != null ) {
            final Object[] params = {sRef, new Integer(level), msg, t};
            try {
                ((Method) this.logService[1]).invoke(this.logService[0], params);
                loggedWithService = true;
            } catch (final InvocationTargetException ex) {
                // no need to log
            } catch (final IllegalAccessException ex) {
                // no need to log
            }
        }
        if ( !loggedWithService ) {
            logger.log(level, msg);
        }
    }