Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ if (!project.hasProperty("skip.aboutlibraries")) {
}

dependencies {
implementation(libs.kermit.io)

implementation("com.wire.kalium:kalium-logic")
implementation("com.wire.kalium:kalium-util")
implementation("com.wire.kalium:kalium-cells")
Expand Down
12 changes: 8 additions & 4 deletions app/src/main/kotlin/com/wire/android/WireApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.work.Configuration
import androidx.work.WorkManager
import co.touchlab.kermit.LogWriter
import co.touchlab.kermit.platformLogWriter
import com.wire.android.analytics.ObserveCurrentSessionAnalyticsUseCase
import com.wire.android.datastore.GlobalDataStore
Expand Down Expand Up @@ -351,7 +352,7 @@
ExternalLoggerManager.initDatadogLogger(applicationContext)

val isLoggingEnabled = globalDataStore.value.isLoggingEnabled().firstOrNull() == true
val config = fullLoggerConfig(isLoggingEnabled)
val config = fullLoggerConfig(isLoggingEnabled, logFileWriter.value.logWriter)

Check warning on line 355 in app/src/main/kotlin/com/wire/android/WireApplication.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/WireApplication.kt#L355

Added line #L355 was not covered by tests

AppLogger.init(config)
CoreLogger.init(config)
Expand Down Expand Up @@ -467,13 +468,16 @@
listOf(platformLogWriter())
)

fun fullLoggerConfig(isLoggingEnabled: Boolean) = if (isLoggingEnabled) {
fun fullLoggerConfig(isLoggingEnabled: Boolean, fileLogWriter: LogWriter? = null) = if (isLoggingEnabled) {
KaliumLogger.Config(
KaliumLogLevel.VERBOSE,
listOf(DataDogLogger, platformLogWriter())
listOfNotNull(DataDogLogger, platformLogWriter(), fileLogWriter)
)
} else {
minimalLoggerConfig()
KaliumLogger.Config(
KaliumLogLevel.WARN,
listOfNotNull(platformLogWriter(), fileLogWriter)
)
}

enum class MemoryLevel(val level: Int) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.wire.android.AppLogger
import com.wire.android.datastore.GlobalDataStore
import com.wire.android.util.logging.LogFileWriter
import dev.zacsweers.metro.Inject
Expand Down Expand Up @@ -54,16 +55,18 @@
globalDataStore.setLoggingEnabled(isEnabled)
if (isEnabled) {
logFileWriter.start()
AppLogger.setLogLevel(level = KaliumLogLevel.VERBOSE)

Check warning on line 58 in app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt#L58

Added line #L58 was not covered by tests
CoreLogger.setLoggingLevel(level = KaliumLogLevel.VERBOSE)
} else {
logFileWriter.stop()
AppLogger.setLogLevel(level = KaliumLogLevel.WARN)

Check warning on line 62 in app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt#L62

Added line #L62 was not covered by tests
CoreLogger.setLoggingLevel(level = KaliumLogLevel.DISABLED)
}
}
}

fun deleteLogs() {
logFileWriter.deleteAllLogFiles()
viewModelScope.launch { logFileWriter.deleteAllLogFiles() }

Check warning on line 69 in app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/LogManagementViewModel.kt#L69

Added line #L69 was not covered by tests
}

fun flushLogs(): Deferred<Unit> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.wire.android.AppLogger
import com.wire.android.datastore.GlobalDataStore
import com.wire.android.di.CurrentAccount
import com.wire.android.util.EMPTY
Expand Down Expand Up @@ -83,7 +84,7 @@
}

fun deleteLogs() {
logFileWriter.deleteAllLogFiles()
viewModelScope.launch { logFileWriter.deleteAllLogFiles() }

Check warning on line 87 in app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt#L87

Added line #L87 was not covered by tests
}

fun flushLogs(): Deferred<Unit> {
Expand All @@ -97,9 +98,11 @@
globalDataStore.setLoggingEnabled(isEnabled)
if (isEnabled) {
logFileWriter.start()
AppLogger.setLogLevel(level = KaliumLogLevel.VERBOSE)

Check warning on line 101 in app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt#L101

Added line #L101 was not covered by tests
CoreLogger.setLoggingLevel(level = KaliumLogLevel.VERBOSE)
} else {
logFileWriter.stop()
AppLogger.setLogLevel(level = KaliumLogLevel.WARN)

Check warning on line 105 in app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/debug/UserDebugViewModel.kt#L105

Added line #L105 was not covered by tests
CoreLogger.setLoggingLevel(level = KaliumLogLevel.DISABLED)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package com.wire.android.util.logging

import android.content.Context
import co.touchlab.kermit.LogWriter
import java.io.File

/**
Expand All @@ -27,6 +28,9 @@ import java.io.File
*/
interface LogFileWriter {

/** The Kermit sink that persists enabled diagnostics directly to files. */
val logWriter: LogWriter

/**
* The active logging file where logs are currently being written
*/
Expand All @@ -51,7 +55,7 @@ interface LogFileWriter {
* Deletes all log files including active and compressed files
*
*/
fun deleteAllLogFiles()
suspend fun deleteAllLogFiles()

companion object {
fun logsDirectory(context: Context) = File(context.cacheDir, "logs")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,16 @@
package com.wire.android.util.logging

data class LogFileWriterConfig(
val flushIntervalMs: Long = DEFAULT_FLUSH_INTERVAL_MS,
val maxBufferSize: Int = DEFAULT_MAX_BUFFER_SIZE,
val bufferSizeBytes: Int = DEFAULT_BUFFER_SIZE_BYTES,
val maxFileSize: Long = DEFAULT_MAX_FILE_SIZE_BYTES,
val rollOnSizeBytes: Long = DEFAULT_ROLL_ON_SIZE_BYTES,
val maxLogFiles: Int = DEFAULT_MAX_LOG_FILES,
val flushTimeoutMs: Long = DEFAULT_FLUSH_TIMEOUT_MS,
val bufferLockTimeoutMs: Long = DEFAULT_BUFFER_LOCK_TIMEOUT_MS
) {
companion object {
private const val DEFAULT_FLUSH_INTERVAL_MS = 5000L
private const val DEFAULT_MAX_BUFFER_SIZE = 100
private const val DEFAULT_BUFFER_SIZE_BYTES = 64 * 1024
private const val DEFAULT_MAX_FILE_SIZE_BYTES = 25 * 1024 * 1024L // 25MB
private const val DEFAULT_ROLL_ON_SIZE_BYTES = 25 * 1024 * 1024L // 25 MiB

// RollingFileLogWriter counts the active file, so this retains ten rolled files.
private const val DEFAULT_MAX_LOG_FILES = 11
private const val DEFAULT_FLUSH_TIMEOUT_MS = 5000L // 5 seconds
private const val DEFAULT_BUFFER_LOCK_TIMEOUT_MS = 3000L // 3 seconds

fun default() = LogFileWriterConfig()
}
Expand Down
Loading
Loading