본문 바로가기
Android/소스

안드로이드 로그캣 스테틱 로그유틸

by 므시칸곰틔군 2015. 3. 18.
/**
 * Created by bearkinf on 2017. 4. 18..
 */

public class LogUtil {


    /**
     * 시스템 정보 가져와 로그에 출력. 클래스,메서드,라인넘버
     */
    public static final String BuildLogMSG(Object msg) {

        StackTraceElement ste = Thread.currentThread().getStackTrace()[4];
        StringBuilder sb = new StringBuilder();
        //이클립스에서 사용되는 바로가기
        sb.append("at [(" + ste.getFileName() + ":" + ste.getMethodName() + ":" + ste.getLineNumber() + ")] ");
        //안드로이드 스튜디오에서 사용되는 바로가기
        sb.append("(" + ste.getFileName() + ":" + ste.getLineNumber() + ")");
        // 중복되는 문제를 어떻게 해결할까ㅡㅡ;;
        sb.append(msg);
        return sb.toString();
    }


    /**
     * true : 보여줌, false 보여주지 않음.
     */
    private static final boolean LOG_VIEW = true;

    /**
     * TAG : 로그캣 필터이름
     */
    private static final String TAG = "bear";

    /**
     * true : 파일 생성.
     */
    private static boolean MAKE_LOG_FILE = false;


    private static String FileName = "";


    /**
     * 주황 Warning(이클립스), Warn : BBB529 (안드로이드 스튜디오)
     */
    public static final void w(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.w(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }

    }

    /**
     * 주황 Warning(이클립스), Warn : BBB529 (안드로이드 스튜디오)
     */
    public static final void w(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.w(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 주황 Warning(이클립스), Warn : BBB529 (안드로이드 스튜디오)
     */
    public static final void W(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.w(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }


    /**
     * 주황 Warning(이클립스), Warn : BBB529 (안드로이드 스튜디오)
     */
    public static final void W(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.w(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 녹색 information(이클립스), Info : 6A8759 (안드로이드 스튜디오)
     */
    public static final void i(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.i(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 녹색 information(이클립스), Info : 6A8759 (안드로이드 스튜디오)
     */
    public static final void i(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.i(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 녹색 information(이클립스), Info : 6A8759 (안드로이드 스튜디오)
     */
    public static final void I(Object msg) {


        if (!LOG_VIEW) {
            return;
        }
        Log.i(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }


    /**
     * 녹색 information(이클립스), Info : 6A8759 (안드로이드 스튜디오)
     */
    public static final void I(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.i(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 검정 verbose(이클립스), 9876aa(안드로이드 스튜디오)
     */
    public static final void v(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.v(TAG, BuildLogMSG(msg));


        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 검정 verbose(이클립스), 9876aa(안드로이드 스튜디오)
     */
    public static final void V(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.v(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 검정 verbose(이클립스), 9876aa(안드로이드 스튜디오)
     */
    public static final void v(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.v(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 검정 verbose(이클립스), 9876aa(안드로이드 스튜디오)
     */
    public static final void V(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.v(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 파랑 debug(이클립스) , Debug : 6897BB (안드로이드 스튜디오)
     */
    public static final void d(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.d(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 파랑 debug(이클립스) , Debug : 6897BB (안드로이드 스튜디오)
     */
    public static final void d(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.d(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }


    /**
     * 파랑 debug(이클립스) , Debug : 6897BB (안드로이드 스튜디오)
     */
    public static final void D(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.d(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }


    /**
     * 파랑 debug(이클립스) , Debug : 6897BB (안드로이드 스튜디오)
     */
    public static final void D(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.d(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }


    /**
     * 빨강 error(이클립스), Error : FF6B68 (안드로이드 스튜디오)
     */
    public static final void e(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.e(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 빨강 error(이클립스), Error : FF6B68 (안드로이드 스튜디오)
     */
    public static final void e(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.e(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 빨강 error(이클립스), Error : FF6B68 (안드로이드 스튜디오)
     */
    public static final void E(Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.e(TAG, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 빨강 error(이클립스), Error : FF6B68 (안드로이드 스튜디오)
     */
    public static final void E(String tag, Object msg) {

        if (!LOG_VIEW) {
            return;
        }
        Log.e(tag, BuildLogMSG(msg));

        if (MAKE_LOG_FILE && !"".equals(FileName)) {
            MakeLogFile(BuildLogMSG(msg), FileName);
        } else if (MAKE_LOG_FILE) {
            MakeLogFile(BuildLogMSG(msg));
        }
    }

    /**
     * 로그파일로 기록
     *
     * 파일로 만들기 전에 메모리접근권한을 어떻게 설정할것인가?
     *
     *
     */
    private static final void MakeLogFile(Object object) {

        String dir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Log"
                + File.separator;
        String name = "B_Log.txt";

        File files = new File(dir + name);

        if (!files.isDirectory()) {
            new File(dir).mkdirs();
        }

        if (!files.exists()) {
            try {
                files.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            try {
                BufferedWriter bfw = new BufferedWriter(new FileWriter(files, true));
                bfw.write(object.toString());
                bfw.write("\n");

                bfw.flush();
                bfw.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 로그파일로 기록 파일이름 지정.
     */
    private static final void MakeLogFile(Object object, String FileName) {

        String dir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Log"
                + File.separator;

        File files = new File(dir + FileName);

        if (!files.isDirectory()) {
            new File(dir).mkdirs();
        }

        if (!files.exists()) {
            try {
                files.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            try {
                BufferedWriter bfw = new BufferedWriter(new FileWriter(files, true));
                bfw.write(object.toString());
                bfw.write("\n");

                bfw.flush();
                bfw.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}