// Path: logful/src/main/java/com/getui/logful/layout/Layout.java
// public interface Layout {
// 
//     byte[] toBytes(LogEvent event);
// 
// }
// 
// Path: logful/src/main/java/com/getui/logful/util/LogUtil.java
// public class LogUtil {
// 
//     public static void d(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void d(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.d(tag, msg, tr);
//         }
//     }
// 
//     public static void e(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.e(tag, msg);
//         }
//     }
// 
//     public static void e(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.e(tag, msg, tr);
//         }
//     }
// 
//     public static void i(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.i(tag, msg);
//         }
//     }
// 
//     public static void i(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.i(tag, msg, tr);
//         }
//     }
// 
//     public static void v(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.v(tag, msg, tr);
//         }
//     }
// 
//     public static void v(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.v(tag, msg);
//         }
//     }
// 
//     public static void w(String tag, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, tr);
//         }
//     }
// 
//     public static void w(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, msg, tr);
//         }
//     }
// 
//     public static void w(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, msg);
//         }
//     }
// 
//     public static void wtf(String tag, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, tr);
//         }
//     }
// 
//     public static void wtf(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, msg, tr);
//         }
//     }
// 
//     public static void wtf(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, msg);
//         }
//     }
// }


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.getui.logful.layout.Layout;
import com.getui.logful.util.LogUtil;
package com.getui.logful.appender;



public class FileManager extends OutputStreamManager {

    private static final FileManagerFactory FACTORY = new FileManagerFactory();

    private final boolean append;

    private final boolean locking;

    private final int bufferSize;

    protected FileManager(final String filePath, final OutputStream os, final boolean append, final boolean locking,
            final Layout layout, final int bufferSize, final long fileSize) {
        super(filePath, os, layout, fileSize);
        this.append = append;
        this.locking = locking;
        this.bufferSize = bufferSize;
    }

    public static FileManager getFileManager(final String filePath, final boolean append, boolean locking,
            final boolean bufferedIo, final Layout layout, final int bufferSize) {
        if (locking && bufferedIo) {
// Path: logful/src/main/java/com/getui/logful/layout/Layout.java
// public interface Layout {
// 
//     byte[] toBytes(LogEvent event);
// 
// }
// 
// Path: logful/src/main/java/com/getui/logful/util/LogUtil.java
// public class LogUtil {
// 
//     public static void d(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void d(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.d(tag, msg, tr);
//         }
//     }
// 
//     public static void e(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.e(tag, msg);
//         }
//     }
// 
//     public static void e(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.e(tag, msg, tr);
//         }
//     }
// 
//     public static void i(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.i(tag, msg);
//         }
//     }
// 
//     public static void i(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.i(tag, msg, tr);
//         }
//     }
// 
//     public static void v(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.v(tag, msg, tr);
//         }
//     }
// 
//     public static void v(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.v(tag, msg);
//         }
//     }
// 
//     public static void w(String tag, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, tr);
//         }
//     }
// 
//     public static void w(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, msg, tr);
//         }
//     }
// 
//     public static void w(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.w(tag, msg);
//         }
//     }
// 
//     public static void wtf(String tag, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, tr);
//         }
//     }
// 
//     public static void wtf(String tag, String msg, Throwable tr) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, msg, tr);
//         }
//     }
// 
//     public static void wtf(String tag, String msg) {
//         if (LoggerFactory.isDebug()) {
//             Log.wtf(tag, msg);
//         }
//     }
// }


// Path: logful/src/main/java/com/getui/logful/appender/FileManager.java
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.getui.logful.layout.Layout;
import com.getui.logful.util.LogUtil;

package com.getui.logful.appender;



public class FileManager extends OutputStreamManager {

    private static final FileManagerFactory FACTORY = new FileManagerFactory();

    private final boolean append;

    private final boolean locking;

    private final int bufferSize;

    protected FileManager(final String filePath, final OutputStream os, final boolean append, final boolean locking,
            final Layout layout, final int bufferSize, final long fileSize) {
        super(filePath, os, layout, fileSize);
        this.append = append;
        this.locking = locking;
        this.bufferSize = bufferSize;
    }

    public static FileManager getFileManager(final String filePath, final boolean append, boolean locking,
            final boolean bufferedIo, final Layout layout, final int bufferSize) {
        if (locking && bufferedIo) {
            locking = false;