// 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;
            this.locking = locking;
            this.bufferedIO = bufferedIO;
            this.bufferSize = bufferSize;
            this.layout = layout;
        }
    }

    private static class FileManagerFactory implements ManagerFactory<FileManager, FactoryData> {

        @Override
        public FileManager createManager(String filePath, FactoryData data) {
            final File file = new File(filePath);
            final File parent = file.getParentFile();
            if (null != parent && !parent.exists()) {
                boolean result = parent.mkdirs();
            }
            OutputStream outputStream;
            // Start file size.
            long fileSize = file.length();
            try {
                outputStream = new FileOutputStream(filePath, data.append);
                int bufferSize = data.bufferSize;
                if (data.bufferedIO) {
                    outputStream = new BufferedOutputStream(outputStream, bufferSize);
                } else {
                    bufferSize = -1;
                }
                return new FileManager(filePath, outputStream, data.append, data.locking, data.layout, bufferSize,
                        fileSize);
            } catch (final FileNotFoundException e) {
// 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;

            this.locking = locking;
            this.bufferedIO = bufferedIO;
            this.bufferSize = bufferSize;
            this.layout = layout;
        }
    }

    private static class FileManagerFactory implements ManagerFactory<FileManager, FactoryData> {

        @Override
        public FileManager createManager(String filePath, FactoryData data) {
            final File file = new File(filePath);
            final File parent = file.getParentFile();
            if (null != parent && !parent.exists()) {
                boolean result = parent.mkdirs();
            }
            OutputStream outputStream;
            // Start file size.
            long fileSize = file.length();
            try {
                outputStream = new FileOutputStream(filePath, data.append);
                int bufferSize = data.bufferSize;
                if (data.bufferedIO) {
                    outputStream = new BufferedOutputStream(outputStream, bufferSize);
                } else {
                    bufferSize = -1;
                }
                return new FileManager(filePath, outputStream, data.append, data.locking, data.layout, bufferSize,
                        fileSize);
            } catch (final FileNotFoundException e) {
                LogUtil.e("FileManagerFactory", "", e);