// Path: src/main/java/com/github/lisicnu/log4android/appender/Appender.java
// public interface Appender {
// 
// 	/**
// 	 * Size returned if log size cannot be determined.
// 	 */
// 	int SIZE_UNDEFINED = -1;
// 
// 	/**
// 	 * Do the logging.
// 	 * 
// 	 * @param clientID
// 	 *            the id of the client.
// 	 * @param name
// 	 *            the name of the logger.
// 	 * @param time
// 	 *            the time since the first logging has done (in milliseconds).
// 	 * @param level
// 	 *            the logging level
// 	 * @param message
// 	 *            the message to log.
// 	 * @param t
// 	 *            the exception to log.
// 	 */
// 	void doLog(String clientID, String name, long time, Level level, Object message, Throwable t);
// 
// 	/**
// 	 * Clear the log.
// 	 */
// 	void clear();
// 
// 	/**
// 	 * Close the log. The consequence is that the logging is disabled until the
// 	 * log is opened. The logging could be enabled by calling
// 	 * <code>open()</code>.
// 	 * 
// 	 * @throws java.io.IOException
// 	 *             if the close failed.
// 	 */
// 	void close() throws IOException;
// 
// 	/**
// 	 * Open the log. The consequence is that the logging is enabled.
// 	 *
// 	 * @throws java.io.IOException
// 	 *             if the open failed.
// 	 * 
// 	 */
// 	void open() throws IOException;
// 
// 	/**
// 	 * Check if the log is open.
// 	 * 
// 	 * @return true if the log is open, false otherwise.
// 	 */
// 	boolean isLogOpen();
// 
// 	/**
// 	 * Get the size of the log. This may not be applicable to all types of
// 	 * appenders.
// 	 * 
// 	 * @return the size of the log.
// 	 */
// 	long getLogSize();
// 
// 	/**
// 	 * Set the formatter to use.
// 	 * 
// 	 * @param formatter
// 	 *            The formatter to set.
// 	 */
// 	void setFormatter(Formatter formatter);
// 
// 	/**
// 	 * Get the formatter that is in use.
// 	 * 
// 	 * @return Returns the formatter.
// 	 */
// 	Formatter getFormatter();
// 
// }
// 
// Path: src/main/java/com/github/lisicnu/log4android/factory/DefaultAppenderFactory.java
// public enum DefaultAppenderFactory {
// 	;
// 	
// 	public static Appender createDefaultAppender() {
// 		Appender appender = new LogCatAppender();
// 		appender.setFormatter(new PatternFormatter());
// 		
// 		return appender;
// 	}
// }
// 
// Path: src/main/java/com/github/lisicnu/log4android/repository/CommonLoggerRepository.java
// public interface CommonLoggerRepository {
// 	/**
// 	 * Get the effective level for the specified logger. Note that the level of
// 	 * the current logger is not checked, since this level could be get from the
// 	 * logger itself.
// 	 * 
// 	 * @return the effective <code>Level</code>
// 	 */
// 	public Level getEffectiveLevel(String loggerName);
// }


import android.util.Log;
import com.github.lisicnu.log4android.appender.Appender;
import com.github.lisicnu.log4android.factory.DefaultAppenderFactory;
import com.github.lisicnu.log4android.repository.CommonLoggerRepository;
import java.io.IOException;
import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
        }

        if (getEffectiveLevel().toInt() <= level.toInt() && level.toInt() > Level.OFF_INT) {

            if (firstLogEvent == true) {
                addDefaultAppender();

                try {
                    open();
                } catch (IOException e) {
                    Log.e(TAG, "Failed to open the log. " + e);
                }

                stopWatch.start();
                firstLogEvent = false;
            }
            ListIterator<Appender> ite = appenderList.listIterator();
            while (ite.hasNext()) {
                Appender appender = ite.next();
                if (appender != null)
                    appender.doLog(clientID, name, stopWatch.getCurrentTime(), level, message, t);
            }
        }
    }

    private void addDefaultAppender() {
        if (appenderList.size() == 0) {
            Log.w(TAG, "Warning! No appender is set, using LogCatAppender with PatternFormatter " +
                    "or not =" + isAddDefaultLogger());
            if (isAddDefaultLogger()) {
// Path: src/main/java/com/github/lisicnu/log4android/appender/Appender.java
// public interface Appender {
// 
// 	/**
// 	 * Size returned if log size cannot be determined.
// 	 */
// 	int SIZE_UNDEFINED = -1;
// 
// 	/**
// 	 * Do the logging.
// 	 * 
// 	 * @param clientID
// 	 *            the id of the client.
// 	 * @param name
// 	 *            the name of the logger.
// 	 * @param time
// 	 *            the time since the first logging has done (in milliseconds).
// 	 * @param level
// 	 *            the logging level
// 	 * @param message
// 	 *            the message to log.
// 	 * @param t
// 	 *            the exception to log.
// 	 */
// 	void doLog(String clientID, String name, long time, Level level, Object message, Throwable t);
// 
// 	/**
// 	 * Clear the log.
// 	 */
// 	void clear();
// 
// 	/**
// 	 * Close the log. The consequence is that the logging is disabled until the
// 	 * log is opened. The logging could be enabled by calling
// 	 * <code>open()</code>.
// 	 * 
// 	 * @throws java.io.IOException
// 	 *             if the close failed.
// 	 */
// 	void close() throws IOException;
// 
// 	/**
// 	 * Open the log. The consequence is that the logging is enabled.
// 	 *
// 	 * @throws java.io.IOException
// 	 *             if the open failed.
// 	 * 
// 	 */
// 	void open() throws IOException;
// 
// 	/**
// 	 * Check if the log is open.
// 	 * 
// 	 * @return true if the log is open, false otherwise.
// 	 */
// 	boolean isLogOpen();
// 
// 	/**
// 	 * Get the size of the log. This may not be applicable to all types of
// 	 * appenders.
// 	 * 
// 	 * @return the size of the log.
// 	 */
// 	long getLogSize();
// 
// 	/**
// 	 * Set the formatter to use.
// 	 * 
// 	 * @param formatter
// 	 *            The formatter to set.
// 	 */
// 	void setFormatter(Formatter formatter);
// 
// 	/**
// 	 * Get the formatter that is in use.
// 	 * 
// 	 * @return Returns the formatter.
// 	 */
// 	Formatter getFormatter();
// 
// }
// 
// Path: src/main/java/com/github/lisicnu/log4android/factory/DefaultAppenderFactory.java
// public enum DefaultAppenderFactory {
// 	;
// 	
// 	public static Appender createDefaultAppender() {
// 		Appender appender = new LogCatAppender();
// 		appender.setFormatter(new PatternFormatter());
// 		
// 		return appender;
// 	}
// }
// 
// Path: src/main/java/com/github/lisicnu/log4android/repository/CommonLoggerRepository.java
// public interface CommonLoggerRepository {
// 	/**
// 	 * Get the effective level for the specified logger. Note that the level of
// 	 * the current logger is not checked, since this level could be get from the
// 	 * logger itself.
// 	 * 
// 	 * @return the effective <code>Level</code>
// 	 */
// 	public Level getEffectiveLevel(String loggerName);
// }


// Path: src/main/java/com/github/lisicnu/log4android/Logger.java
import android.util.Log;
import com.github.lisicnu.log4android.appender.Appender;
import com.github.lisicnu.log4android.factory.DefaultAppenderFactory;
import com.github.lisicnu.log4android.repository.CommonLoggerRepository;
import java.io.IOException;
import java.util.List;
import java.util.ListIterator;
import java.util.Vector;

        }

        if (getEffectiveLevel().toInt() <= level.toInt() && level.toInt() > Level.OFF_INT) {

            if (firstLogEvent == true) {
                addDefaultAppender();

                try {
                    open();
                } catch (IOException e) {
                    Log.e(TAG, "Failed to open the log. " + e);
                }

                stopWatch.start();
                firstLogEvent = false;
            }
            ListIterator<Appender> ite = appenderList.listIterator();
            while (ite.hasNext()) {
                Appender appender = ite.next();
                if (appender != null)
                    appender.doLog(clientID, name, stopWatch.getCurrentTime(), level, message, t);
            }
        }
    }

    private void addDefaultAppender() {
        if (appenderList.size() == 0) {
            Log.w(TAG, "Warning! No appender is set, using LogCatAppender with PatternFormatter " +
                    "or not =" + isAddDefaultLogger());
            if (isAddDefaultLogger()) {
                Appender appender = DefaultAppenderFactory.createDefaultAppender();