创建 FileLoggingTree.java

dev
wangsiyuan 2023-12-07 19:23:09 +08:00
parent b4ce52bbdc
commit f161762d92
1 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,59 @@
package com.nbee.echolink;
import android.content.Context;
import android.util.Log;
import timber.log.Timber;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class FileLoggingTree extends Timber.DebugTree {
private final File logFile;
public FileLoggingTree(Context context) {
File logDirectory = new File(context.getFilesDir(), "logs");
if (!logDirectory.exists()) {
logDirectory.mkdirs();
}
this.logFile = new File(logDirectory, "echoLink.log");
}
@Override
protected void log(int priority, String tag, String message, Throwable t) {
super.log(priority, tag, message, t);
try (FileWriter fileWriter = new FileWriter(logFile, true)) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String timestamp = dateFormat.format(new Date());
String logMessage = timestamp + " [" + priorityToString(priority) + "] " + tag + ": " + message + "\n";
fileWriter.append(logMessage);
if (t != null) {
fileWriter.append(Log.getStackTraceString(t)).append("\n");
}
} catch (IOException e) {
Log.e("FileLoggingTree", "Error writing log to file", e);
}
}
private String priorityToString(int priority) {
switch (priority) {
case Log.ERROR:
return "ERROR";
case Log.WARN:
return "WARN";
case Log.INFO:
return "INFO";
case Log.DEBUG:
return "DEBUG";
case Log.VERBOSE:
return "VERBOSE";
default:
return "UNKNOWN";
}
}
}