android source

utils. log(), append2file(), write2file()

리오파파 2019. 7. 16. 12:06

utils 에 있는 log

 

void log

tag, text를 trace 정보와 함께 Log.w로 표시하고 mPackageLogPath에 기록도 함

void log (String tag, String text) {
	int pid = android.os.Process.myPid();
	StackTraceElement[] traces;
	traces = Thread.currentThread().getStackTrace();
	String log = pid + ": " + traceName(traces[5].getMethodName()) + traceName(traces[4].getMethodName()) + traceClassName(traces[3].getClassName())+"> "+traces[3].getMethodName() + "#" + traces[3].getLineNumber() + " {"+ tag + "} " + text;
	Log.w(tag , log);
	append2file(mPackageLogPath, "log_" + logDate + ".txt", getMilliSec2String(System.currentTimeMillis(), FORMAT_LOG_TIME) +  " : " + log);
}

 

관련된 하위 functions

  traceName : stack 상에서 android system에 관련된 것들은 무시하기 위함

    static private String omits [] = { "performResume", "performCreate", "dispatch", "callActivityOnResume", "access$",
            "handleReceiver", "handleMessage", "dispatchKeyEvent", "moveToState"};
    private String traceName (String s) {
        for (String o : omits) {
            if (s.contains(o)) return "";
        }
        return s + "> ";
    }

  traceClassName : Class name인 경우 마지막 이름만 가져 옴

    private String traceClassName(String s) {
        return s.substring(s.lastIndexOf(".")+1);
    }

  getMilliSec2String : long timestamp 를 text로 표시


    String getMilliSec2String(long milliSec, String format) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format, Locale.KOREA);
        return dateFormat.format(new Date(milliSec));
    }

append2file : 실제 log 내용을 기록

    void append2file (File directory, String filename, String text) {
        BufferedWriter bw = null;
        FileWriter fw = null;
        try {
            File file = new File(directory, filename);
            if (!file.exists()) {
                if(!file.createNewFile()) {
                    Log.e("createFile"," Error");
                }
            }
            fw = new FileWriter(file.getAbsoluteFile(), true);
            bw = new BufferedWriter(fw);
            bw.write("\n" + text + "\n");
        } catch (IOException e) {
            Log.e("appendIOExcept1",  e.getMessage());
        } finally {
            try {
                if (bw != null) bw.close();
                if (fw != null) fw.close();
            } catch (IOException ex) {
                Log.e("appendIOExcept2",  ex.getMessage());
            }
        }
    }

write2file : 새로 덮어 쓰는 경우

    void write2file (File directory, String filename, String text) {
        final File file = new File(directory, filename);
        try
        {
            file.createNewFile();
            FileOutputStream fOut = new FileOutputStream(file);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.write(text);
            myOutWriter.close();
            fOut.flush();
            fOut.close();
        }
        catch (IOException e) {
            Log.e("Write Error", file.toString() + " Err:" + e.toString());
        }
    }

 

'android source ' 카테고리의 다른 글

public directory 가져오기  (0) 2019.07.23
webView, file url link  (0) 2019.07.23
arrayList 를 SharedPreference에 save, get 하기  (0) 2019.07.16
utils.readlines()  (0) 2019.07.16
utils.isHeadPhonePlugged()  (0) 2019.07.16