class AntTaskLogger extends AbstractLogger {

    private final Task task;

    /**
     * @deprecated use {@link AntTaskLogger(Task)} instead
     */
    @Deprecated
    public AntTaskLogger(Task task, LogMessageFilter ignored) {
        this(task);
    }

    public AntTaskLogger(Task task) {
        this.task = task;
    }

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

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

        int antLevel;
        if (level.intValue() == Level.SEVERE.intValue()) {
            antLevel = Project.MSG_ERR;
        } else if (level.intValue() == Level.WARNING.intValue()) {
            antLevel = Project.MSG_WARN;
        } else if (level.intValue() == Level.INFO.intValue()) {
            antLevel = Project.MSG_INFO;
        } else if (level.intValue() == Level.CONFIG.intValue()) {
            //no config level, using debug
            antLevel = Project.MSG_DEBUG;
        } else if (level.intValue() == Level.FINE.intValue()) {
            antLevel = Project.MSG_DEBUG;
        } else {
            //lower than FINE
            antLevel = Project.MSG_DEBUG;
        }
        task.log(filterMessage(message), e, antLevel);
    
<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>