class CompositeLogger extends AbstractLogger {

    private final List<Logger> loggers;

    /**
     * @deprecated use {@link #CompositeLogger(List)}
     */
    public CompositeLogger(List<Logger> loggers, LogMessageFilter filter) {
        this(loggers);
    }

    public CompositeLogger(List<Logger> loggers) {
        this.loggers = loggers;
    }

    @Override
    public void close() throws Exception {
        for (Logger logger : loggers) {
            logger.close();
        }
    }

    @Override
    public void log(Level level, String message, Throwable e) {<FILL_FUNCTION_BODY>}
}

        if (level == Level.OFF) {
            return;
        }

        for (Logger logger : loggers) {
            logger.log(level, message, e);
        }

    
<methods>public void config(java.lang.String) ,public void config(java.lang.String, java.lang.Throwable) ,public void debug(java.lang.String) ,public void debug(java.lang.String, java.lang.Throwable) ,public void fine(java.lang.String) ,public void fine(java.lang.String, java.lang.Throwable) ,public void info(java.lang.String) ,public void info(java.lang.String, java.lang.Throwable) ,public void severe(java.lang.String) ,public void severe(java.lang.String, java.lang.Throwable) ,public void warning(java.lang.String) ,public void warning(java.lang.String, java.lang.Throwable) <variables>