From f161762d92668dda6b1f950c7d70eff0ddd6d2e9 Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Thu, 7 Dec 2023 19:23:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=20FileLoggingTree.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nbee/echolink/FileLoggingTree.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 app/src/main/java/com/nbee/echolink/FileLoggingTree.java diff --git a/app/src/main/java/com/nbee/echolink/FileLoggingTree.java b/app/src/main/java/com/nbee/echolink/FileLoggingTree.java new file mode 100644 index 0000000..0bd077b --- /dev/null +++ b/app/src/main/java/com/nbee/echolink/FileLoggingTree.java @@ -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"; + } + } +}