Updated on 2026-08-14

This commit is contained in:
Tangem 2025-06-09 13:11:59 +04:00
parent 57421002b1
commit 1c1b913321
4 changed files with 14 additions and 21 deletions

View file

@ -22,9 +22,11 @@ internal class TangemCardSDKLogger(
) : TangemSdkLogger { ) : TangemSdkLogger {
override fun log(message: () -> String, level: Log.Level) { override fun log(message: () -> String, level: Log.Level) {
// Disabled for now in [REDACTED_JIRA] if (!levels.contains(level)) return
// if (!levels.contains(level)) return
// appLogsStore.saveLogMessage(
// appLogsStore.saveLogMessage(message = messageFormatter.format(message, level)) tag = "CardSDK_${level.name}",
message = messageFormatter.format(message = message, level = level),
)
} }
} }

View file

@ -2,6 +2,7 @@ package com.tangem.tap.data
import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.blockchain.common.logging.BlockchainSDKLogger
import com.tangem.datasource.local.logs.AppLogsStore import com.tangem.datasource.local.logs.AppLogsStore
import timber.log.Timber
/** /**
* BlockchainSDK logger implementation * BlockchainSDK logger implementation
@ -15,6 +16,7 @@ internal class TangemBlockchainSDKLogger(
) : BlockchainSDKLogger { ) : BlockchainSDKLogger {
override fun log(level: BlockchainSDKLogger.Level, message: String) { override fun log(level: BlockchainSDKLogger.Level, message: String) {
Timber.d(message)
appLogsStore.saveLogMessage(tag = "BlockchainSDK_${level.name}", message) appLogsStore.saveLogMessage(tag = "BlockchainSDK_${level.name}", message)
} }
} }

View file

@ -1,7 +1,6 @@
package com.tangem.datasource.local.logs package com.tangem.datasource.local.logs
import android.content.Context import android.content.Context
import com.tangem.datasource.BuildConfig
import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.* import kotlinx.coroutines.*
@ -34,12 +33,14 @@ class AppLogsStore @Inject constructor(
context = SupervisorJob() + dispatchers.io + context = SupervisorJob() + dispatchers.io +
CoroutineExceptionHandler { _, error -> Timber.e("AppLogsStore.scope is failed $error") }, CoroutineExceptionHandler { _, error -> Timber.e("AppLogsStore.scope is failed $error") },
) )
private val mutex = Mutex() private val mutex = Mutex()
private val zipMutex = Mutex() private val zipMutex = Mutex()
private val logFile by lazy { private val logFile by lazy {
File(applicationContext.filesDir, PERMITTED_FILE_NAME) File(applicationContext.filesDir, PERMITTED_FILE_NAME)
} }
private val logFileZip by lazy { private val logFileZip by lazy {
File(applicationContext.filesDir, PERMITTED_FILE_NAME_ZIP) File(applicationContext.filesDir, PERMITTED_FILE_NAME_ZIP)
} }
@ -64,7 +65,7 @@ class AppLogsStore @Inject constructor(
suspend fun getZipFile(): File? { suspend fun getZipFile(): File? {
return zipMutex.withLock { return zipMutex.withLock {
if (logFile.exists()) { if (logFile.exists()) {
zip(listOf(logFile), logFileZip) zip(filesToCompress = listOf(logFile), outputZipFile = logFileZip)
} else { } else {
null null
} }
@ -73,11 +74,6 @@ class AppLogsStore @Inject constructor(
/** Save log [message] */ /** Save log [message] */
fun saveLogMessage(tag: String, message: String) { fun saveLogMessage(tag: String, message: String) {
// Temporally logs are not saved in prod environment
if (!BuildConfig.TESTER_MENU_ENABLED) {
return
}
launchWithLock { launchWithLock {
createFileIfNotExist() createFileIfNotExist()
@ -87,11 +83,6 @@ class AppLogsStore @Inject constructor(
/** Save log that consists from [messages] */ /** Save log that consists from [messages] */
fun saveLogMessage(tag: String, vararg messages: String) { fun saveLogMessage(tag: String, vararg messages: String) {
// Temporally logs are not saved in prod environment
if (!BuildConfig.TESTER_MENU_ENABLED) {
return
}
launchWithLock { launchWithLock {
createFileIfNotExist() createFileIfNotExist()
@ -139,9 +130,8 @@ class AppLogsStore @Inject constructor(
private fun launchWithLock(callback: () -> Unit) { private fun launchWithLock(callback: () -> Unit) {
scope.launch { scope.launch {
mutex.withLock { mutex.withLock {
runCatching { runCatching { callback() }
callback() .onFailure(Timber::e)
}.onFailure(Timber::e)
} }
} }
} }

View file

@ -29,8 +29,7 @@ class SendFeedbackEmailUseCase(
address = getAddress(type), address = getAddress(type),
subject = emailSubjectResolver.resolve(type), subject = emailSubjectResolver.resolve(type),
message = createMessage(type), message = createMessage(type),
// Temporally user data is not sent file = feedbackRepository.getZipLogFile(),
file = null, // feedbackRepository.getZipLogFile(),
) )
feedbackRepository.sendEmail(email) feedbackRepository.sendEmail(email)