[3.3.0][日志] 添加全量日志功能
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user