From 60fde3e5055390b95dcfff2252f4df84c4942822 Mon Sep 17 00:00:00 2001
From: Dana <Dana_Lee1016@126.com>
Date: 星期三, 03 十二月 2025 15:28:49 +0800
Subject: [PATCH] 1.日志 文件h264_xxxx.log 保留3天。超过3天进行删除

---
 app/src/main/java/com/anyun/h264/FileLoggingTree.java |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/anyun/h264/FileLoggingTree.java b/app/src/main/java/com/anyun/h264/FileLoggingTree.java
index d133697..685be20 100644
--- a/app/src/main/java/com/anyun/h264/FileLoggingTree.java
+++ b/app/src/main/java/com/anyun/h264/FileLoggingTree.java
@@ -5,11 +5,13 @@
 import timber.log.Timber;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Timber Tree implementation that logs to files.
@@ -19,6 +21,8 @@
     private static final String LOG_DIR = "nvlog";
     private static final String LOG_PREFIX = "h264_";
     private static final String LOG_SUFFIX = ".log";
+        // 鏃ュ織鏂囦欢淇濈暀澶╂暟
+        private static final int LOG_RETENTION_DAYS = 3;
     private static final String DATE_FORMAT = "yyyyMMdd";
     private static final String TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
     
@@ -36,6 +40,8 @@
             // Check if we need to update the log file (new day)
             if (!logFileName.equals(currentLogFile)) {
                 currentLogFile = logFileName;
+                // 鏂扮殑涓�澶╋紝椤轰究娓呯悊杩囨湡鏃ュ織鏂囦欢
+                cleanupExpiredLogFiles(LOG_RETENTION_DAYS);
             }
             
             File logFile = getLogFile(logFileName);
@@ -88,6 +94,50 @@
         } catch (IOException e) {
             Log.e("FileLoggingTree", "Error getting log file", e);
             return null;
+        }
+    }
+
+    /**
+     * 娓呯悊瓒呭嚭淇濈暀澶╂暟鐨勬棩蹇楁枃浠�
+     */
+    private void cleanupExpiredLogFiles(int retentionDays) {
+        if (retentionDays <= 0) {
+            return;
+        }
+
+        try {
+            File logDir = new File(Environment.getExternalStorageDirectory(), LOG_DIR);
+            if (!logDir.exists() || !logDir.isDirectory()) {
+                return;
+            }
+
+            long retentionMillis = TimeUnit.DAYS.toMillis(Math.max(1, retentionDays));
+            long cutoffTime = System.currentTimeMillis() - retentionMillis;
+
+            File[] files = logDir.listFiles(new FileFilter() {
+                @Override
+                public boolean accept(File pathname) {
+                    String name = pathname.getName();
+                    return name.startsWith(LOG_PREFIX) && name.endsWith(LOG_SUFFIX);
+                }
+            });
+
+            if (files == null || files.length == 0) {
+                return;
+            }
+
+            for (File file : files) {
+                if (file.lastModified() < cutoffTime) {
+                    boolean deleted = file.delete();
+                    if (deleted) {
+                        Log.i("FileLoggingTree", "Deleted expired log file: " + file.getAbsolutePath());
+                    } else {
+                        Log.w("FileLoggingTree", "Failed to delete expired log file: " + file.getAbsolutePath());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            Log.e("FileLoggingTree", "Error cleaning up expired log files", e);
         }
     }
     
@@ -144,3 +194,4 @@
     }
 }
 
+

--
Gitblit v1.8.0