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 |