[3.3.0][日志] 添加全量日志功能

This commit is contained in:
renwj
2023-06-30 19:28:23 +08:00
parent e66dad3696
commit 08d024d591
7 changed files with 100 additions and 1 deletions

View File

@@ -218,7 +218,8 @@ ext {
weak_network : "com.mogo.weak:network:1.0.0",
mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.5"
mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.5",
log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.0"
]
android = [
launcherApplicationId : "com.mogo.launcher",

View File

@@ -90,6 +90,7 @@ dependencies {
implementation rootProject.ext.dependencies.koomnative
implementation rootProject.ext.dependencies.koomxhook
implementation rootProject.ext.dependencies.mofang_runtime
implementation rootProject.ext.dependencies.log_runtime
implementation group: "com.tencent.matrix", name: "matrix-android-lib", version: MATRIX_VERSION, changing: true
implementation group: "com.tencent.matrix", name: "matrix-android-commons", version: MATRIX_VERSION, changing: true
implementation group: "com.tencent.matrix", name: "matrix-trace-canary", version: MATRIX_VERSION, changing: true

View File

@@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.mogo.eagle.core.function.api.devatools.apm.*
import com.mogo.eagle.core.function.api.devatools.strict.*
import com.mogo.eagle.core.function.api.devatools.download.*
import com.mogo.eagle.core.function.api.devatools.logcat.*
import com.mogo.eagle.core.function.api.devatools.mofang.*
import com.mogo.eagle.core.function.api.lookaround.*
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -43,6 +44,7 @@ import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
import com.zhjt.mogo_core_function_devatools.koom.KoomInitTask
import com.zhjt.mogo_core_function_devatools.logcat.*
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.mogo_core_function_devatools.lookaround.*
import com.zhjt.mogo_core_function_devatools.matrix.DynamicConfigImpl
@@ -79,6 +81,8 @@ class DevaToolsProvider : IDevaToolsProvider {
private val mofangProvider by lazy { MoGoMoFangProviderImpl() }
private val logRecordProvider by lazy { MoGoLogRecordProviderImpl() }
@Volatile
private var mDockerVersion: String? = null
@@ -113,6 +117,11 @@ class DevaToolsProvider : IDevaToolsProvider {
(mContext as? Application)?.also {
mofangProvider.init(it)
}
mContext?.also {
logRecordProvider.init(it)
logRecordProvider.start()
}
}
override fun checkMonitorDb() {
@@ -366,4 +375,6 @@ class DevaToolsProvider : IDevaToolsProvider {
override fun lookAroundDataProvider(): IMoGoLookAroundProvider = lookAroundDataProvider
override fun mofang(): IMoGoMoFangProvider = mofangProvider
override fun logRecord(): IMoGoLogRecordProvider = logRecordProvider
}

View File

@@ -0,0 +1,54 @@
package com.zhjt.mogo_core_function_devatools.logcat
import android.content.*
import android.os.Process
import android.util.*
import com.mogo.core.log.record.*
import com.mogo.core.log.record.config.*
import com.mogo.eagle.core.function.api.devatools.logcat.*
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.logcat.uploader.*
import kotlinx.coroutines.*
import java.io.*
import java.util.concurrent.TimeUnit.MINUTES
import java.util.concurrent.atomic.AtomicBoolean
internal class MoGoLogRecordProviderImpl: IMoGoLogRecordProvider {
private val flag by lazy { AtomicBoolean(false) }
private val scope by lazy { CoroutineScope(Dispatchers.IO + SupervisorJob()) }
override fun init(context: Context) {
LogcatManager.init(LogcatConfig.Builder().context(context)
.recordPeriod(MINUTES.toMillis(3))
.maxSizeInLogDir((1 * 1024 * 1024 * 1024).toLong()) //1G的最大容量
.recordDir(File(context.getExternalFilesDir(null), "logcat"))
.pid(Process.myPid())
.uploader(LogRecordUploader()))
}
override fun start() {
if (flag.get()) {
return
}
flag.set(true)
LogcatManager.start()
}
override fun stop() {
if (!flag.get()) {
return
}
flag.set(false)
LogcatManager.stop()
}
override fun upload(startTime: Long, endTime: Long) {
scope.launch {
val result = LogcatManager.upload(startTime, endTime)
Log.d(TAG, "上传日志:[startTime:$startTime, endTime: $endTime], 结果: $result")
}
}
}

View File

@@ -0,0 +1,11 @@
package com.zhjt.mogo_core_function_devatools.logcat.uploader
import com.mogo.core.log.record.config.uploader.*
import com.mogo.core.log.record.model.*
internal class LogRecordUploader: ILogcatUploader {
override suspend fun upload(startTime: Long, endTime: Long, generatedZipPath: String): UploadState {
throw AssertionError("Not Implementation")
}
}

View File

@@ -14,6 +14,7 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.devatools.apm.*
import com.mogo.eagle.core.function.api.devatools.strict.*
import com.mogo.eagle.core.function.api.devatools.download.*
import com.mogo.eagle.core.function.api.devatools.logcat.*
import com.mogo.eagle.core.function.api.devatools.mofang.*
import com.mogo.eagle.core.function.api.lookaround.*
import com.mogo.eagle.core.function.api.upgrade.*
@@ -218,4 +219,10 @@ interface IDevaToolsProvider : IProvider {
* 魔方功能提供者
*/
fun mofang(): IMoGoMoFangProvider
/**
* 日志记录功能
*/
fun logRecord(): IMoGoLogRecordProvider
}

View File

@@ -0,0 +1,14 @@
package com.mogo.eagle.core.function.api.devatools.logcat
import android.content.Context
interface IMoGoLogRecordProvider {
fun init(context: Context)
fun start()
fun stop()
fun upload(startTime: Long, endTime: Long)
}