Browse Source

v1.0.0开发:调整日志存储的目录结构

#Suyghur 4 years ago
parent
commit
67faebf7f0

+ 0 - 23
library_comm/src/main/java/com/dolin/common/util/FileUtils.kt

@@ -1,23 +0,0 @@
-package com.dolin.common.util
-
-import android.content.Context
-import java.io.File
-
-/**
- * @author #Suyghur.
- * Created on 4/9/21
- */
-object FileUtils {
-
-    fun getLogDir(context: Context): String {
-        var path = context.getExternalFilesDir("dolin/zap")
-        if (path == null) {
-            path = File(context.filesDir, "dolin/zap")
-        }
-        if (!path.exists()) {
-            path.mkdirs()
-        }
-        return path.absolutePath
-    }
-
-}

+ 3 - 3
library_zap/src/main/java/com/dolin/zap/entity/Config.kt

@@ -6,7 +6,7 @@ package com.dolin.zap.entity
  */
 class Config private constructor(builder: Builder) {
 
-    var logDir = ""
+    var logFolderDir = ""
         private set
     var tag = ""
         private set
@@ -25,7 +25,7 @@ class Config private constructor(builder: Builder) {
 
 
     init {
-        this.logDir = builder.logDir
+        this.logFolderDir = builder.logDir
         this.tag = builder.tag
         this.logcatLevel = builder.logcatLevel
         this.recordLevel = builder.recordLevel
@@ -37,7 +37,7 @@ class Config private constructor(builder: Builder) {
 
     override fun toString(): String {
         return "Config{" +
-                "logDir='" + logDir + '\'' +
+                "logDir='" + logFolderDir + '\'' +
                 ", logcatLevel=" + logcatLevel +
                 ", recordLevel=" + recordLevel +
                 ", overdueDayMs=" + overdueDayMs +

+ 7 - 8
library_zap/src/main/java/com/dolin/zap/impl/Record2MMap.kt

@@ -2,31 +2,30 @@ package com.dolin.zap.impl
 
 import com.dolin.zap.internal.IRecord
 import com.dolin.zap.util.LogFileUtils
+import java.io.File
 
 /**
  * @author #Suyghur.
  * Created on 4/7/21
  */
-class Record2MMap(private val folderPath: String, private val logDate: String,
+class Record2MMap(bufferDir: String,private val logDir:String, private val logDate: String,
                   capacity: Int, private val limitSize: Int, compress: Boolean) : IRecord {
 
     //buffer指针
     private var ptr = 0L
-    private var bufferPath: String
     private var logPath: String
     private var num = 1
 
     init {
         System.loadLibrary("dolin-zap")
-        num = LogFileUtils.getLogFileNumByDate(folderPath, logDate)
-        bufferPath = "$folderPath/zap.cache"
+        num = LogFileUtils.getLogFileNumByDate(logDir, logDate)
         logPath = if (num > 1) {
-            "$folderPath/$logDate/$logDate-p$num.zap"
+            "$logDir/$logDate-p$num.zap"
         } else {
-            "$folderPath/$logDate/$logDate.zap"
+            "$logDir/$logDate.zap"
         }
         try {
-            ptr = initNative(bufferPath, logPath, capacity, limitSize, compress)
+            ptr = initNative(bufferDir, logPath, capacity, limitSize, compress)
         } catch (e: Exception) {
             e.printStackTrace()
         }
@@ -47,7 +46,7 @@ class Record2MMap(private val folderPath: String, private val logDate: String,
             try {
                 //自动扩容
                 if (isLogFileOverSizeNative(ptr)) {
-                    logPath = "$folderPath/$logDate/$logDate-p${num + 1}.zap"
+                    logPath = "$logDir/$logDate-p${num + 1}.zap"
                     expLogFileNative(ptr, logPath, limitSize)
                 }
                 asyncFlushNative(ptr)

+ 12 - 10
library_zap/src/main/java/com/dolin/zap/impl/ZapPrint.kt

@@ -3,7 +3,6 @@ package com.dolin.zap.impl
 import android.app.Application
 import android.text.TextUtils
 import android.util.Log
-import com.dolin.common.util.FileUtils
 import com.dolin.zap.entity.Config
 import com.dolin.zap.entity.Level
 import com.dolin.zap.entity.ZapData
@@ -11,7 +10,6 @@ import com.dolin.zap.format.DateFileFormatter
 import com.dolin.zap.internal.IPrint
 import com.dolin.zap.lifecycle.ZapLifecycle
 import com.dolin.zap.util.LogFileUtils
-import java.io.File
 import java.lang.reflect.Array
 import java.text.SimpleDateFormat
 import java.util.*
@@ -24,22 +22,23 @@ class ZapPrint : IPrint {
 
     private var hasInitialized: Boolean = false
     private var tag = ""
-    private var logDir = ""
+    private var logFolderDir = ""
     private var logcatLevel = Level.NONE
     private var recordLevel = Level.NONE
     private var record2MMap: Record2MMap? = null
     private var dateFileFormatter: DateFileFormatter = DateFileFormatter()
 
-
     fun initialize(application: Application, config: Config) {
         if (hasInitialized) {
             return
         }
 
-        this.logDir = if (TextUtils.isEmpty(config.logDir)) {
-            FileUtils.getLogDir(application)
+        val date = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
+
+        this.logFolderDir = if (TextUtils.isEmpty(config.logFolderDir)) {
+            LogFileUtils.getLogFolderDir(application)
         } else {
-            config.logDir
+            config.logFolderDir
         }
 
         this.tag = if (TextUtils.isEmpty(config.tag)) {
@@ -47,17 +46,20 @@ class ZapPrint : IPrint {
         } else {
             config.tag
         }
+
         this.logcatLevel = config.logcatLevel
         this.recordLevel = config.recordLevel
 
-        val date = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
+        val bufferPath = "$logFolderDir/zap.cache"
+        val logPath = LogFileUtils.getLogDir(logFolderDir, date)
+
         if (config.recordEnable) {
-            record2MMap = Record2MMap(logDir, date, 1024 * 400, config.fileSizeLimitDayByte, config.compressEnable)
+            record2MMap = Record2MMap(bufferPath, logPath, date, 1024 * 400, config.fileSizeLimitDayByte, config.compressEnable)
             ZapLifecycle.registerZapLifeCallback(application, record2MMap!!)
         }
 
         Thread {
-            LogFileUtils.cleanOverdueLog(logDir, config.overdueDayMs)
+            LogFileUtils.cleanOverdueLog(logFolderDir, config.overdueDayMs)
         }.start()
     }
 

+ 21 - 1
library_zap/src/main/java/com/dolin/zap/util/LogFileUtils.kt

@@ -1,5 +1,6 @@
 package com.dolin.zap.util
 
+import android.content.Context
 import java.io.File
 
 /**
@@ -27,6 +28,25 @@ object LogFileUtils {
         return System.currentTimeMillis() - file.lastModified() > overdueDayMs
     }
 
+    fun getLogFolderDir(context: Context): String {
+        var folder = context.getExternalFilesDir("dolin/zap")
+        if (folder == null) {
+            folder = File(context.filesDir, "dolin/zap")
+        }
+        if (!folder.exists()) {
+            folder.mkdirs()
+        }
+        return folder.absolutePath
+    }
+
+    fun getLogDir(folderDir: String, date: String): String {
+        val folder = File("$folderDir/$date")
+        if (!folder.exists()) {
+            folder.mkdirs()
+        }
+        return folder.absolutePath
+    }
+
     fun getLogFileNumByDate(folderPath: String, date: String): Int {
         var num = 0
         val folder = File(folderPath)
@@ -35,7 +55,7 @@ object LogFileUtils {
         }
         repeat(folder.walk().maxDepth(1)
                 .filter { it.isFile }
-                .filter { it.name.startsWith(date) }
+//                .filter { it.name.startsWith(date) }
                 .count()) {
             num++
         }