feat(log): 增加日志定期清理机制,防止长期运行日志无限累加
- FileLogger 新增过期清理(保留7天)及单文件100MB写入上限(适配异步写入版) - CrashHandler 激活崩溃日志清理并补充异常保护 - App 启动清理 + 运行中每24小时定时清理,覆盖设备长期不断电场景 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
8e8ab6936c
commit
5ffdb3ea64
@@ -5,8 +5,11 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import com.shuwei.intelligent.shelves.utils.BootReceiver
|
||||
import com.shuwei.intelligent.shelves.utils.CrashHandler
|
||||
import com.shuwei.intelligent.shelves.utils.FileLogger
|
||||
|
||||
/**
|
||||
* @author: star
|
||||
@@ -19,10 +22,22 @@ class App : Application() {
|
||||
super.onCreate()
|
||||
app = this
|
||||
CrashHandler.init(this)
|
||||
// 启动时立即清理一次过期日志
|
||||
cleanupLogs()
|
||||
// 设备长期不断电、进程不会重新启动,运行中每24小时定期清理一次
|
||||
logCleanupHandler.postDelayed(logCleanupRunnable, LOG_CLEANUP_INTERVAL)
|
||||
val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED)
|
||||
registerReceiver(BootReceiver(), filter)
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理过期的日志文件:文件日志与崩溃日志均保留最近7天
|
||||
*/
|
||||
private fun cleanupLogs() {
|
||||
FileLogger.cleanupExpiredLogs(this)
|
||||
CrashHandler.getInstance()?.cleanupOldCrashReports()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private lateinit var app: App
|
||||
var canteenId = "0"
|
||||
@@ -36,6 +51,19 @@ class App : Application() {
|
||||
@Volatile
|
||||
private var sharedPref: SharedPreferences? = null
|
||||
|
||||
/** 日志定期清理间隔:24小时,与日志文件按天滚动对齐 */
|
||||
private const val LOG_CLEANUP_INTERVAL = 24L * 60 * 60 * 1000
|
||||
|
||||
private val logCleanupHandler = Handler(Looper.getMainLooper())
|
||||
|
||||
/** 日志定期清理任务:执行后重新调度自身,形成循环 */
|
||||
private val logCleanupRunnable = object : Runnable {
|
||||
override fun run() {
|
||||
getInstance().cleanupLogs()
|
||||
logCleanupHandler.postDelayed(this, LOG_CLEANUP_INTERVAL)
|
||||
}
|
||||
}
|
||||
|
||||
fun getInstance(): App {
|
||||
return app
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user