Skip to content

Commit

Permalink
refactor: rename logger actions
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed May 9, 2024
1 parent f803561 commit e67ea60
Show file tree
Hide file tree
Showing 21 changed files with 92 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import io.embrace.android.embracesdk.IntegrationTestRule
import io.embrace.android.embracesdk.Severity
import io.embrace.android.embracesdk.fakes.FakeLogRecordExporter
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.recordSession
import org.junit.Assert
import org.junit.Rule
Expand Down Expand Up @@ -49,7 +48,7 @@ internal class LogRecordExporterTest {
fun `a LogRecordExporter added after initialization won't be used`() {
with(testRule) {

val fake = FakeLoggerAction()
val fake = FakeLogAction()
harness.overriddenInitModule.logger.apply { addLoggerAction(fake) }

val fakeLogRecordExporter = FakeLogRecordExporter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@ package io.embrace.android.embracesdk.testcases
import android.os.Build
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.embrace.android.embracesdk.IntegrationTestRule
import io.embrace.android.embracesdk.Severity
import io.embrace.android.embracesdk.fakes.FakeLogRecordExporter
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.fakes.FakeSpanExporter
import io.embrace.android.embracesdk.opentelemetry.assertExpectedAttributes
import io.embrace.android.embracesdk.opentelemetry.assertHasEmbraceAttribute
import io.embrace.android.embracesdk.opentelemetry.embProcessIdentifier
import io.embrace.android.embracesdk.opentelemetry.embSequenceId
import io.embrace.android.embracesdk.recordSession
import org.junit.Assert
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Rule
Expand Down Expand Up @@ -74,7 +71,7 @@ internal class SpanTest {
fun `a SpanExporter added after initialization won't be used`() {
with(testRule) {

val fake = FakeLoggerAction()
val fake = FakeLogAction()
harness.overriddenInitModule.logger.apply { addLoggerAction(fake) }

val fakeSpanExporter = FakeSpanExporter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
import io.embrace.android.embracesdk.internal.utils.ThrowableUtilsKt;
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger;
import io.embrace.android.embracesdk.logging.InternalErrorService;
import io.embrace.android.embracesdk.logging.ReportingLoggerAction;
import io.embrace.android.embracesdk.logging.InternalErrorServiceAction;
import io.embrace.android.embracesdk.ndk.NativeModule;
import io.embrace.android.embracesdk.ndk.NdkService;
import io.embrace.android.embracesdk.network.EmbraceNetworkRequest;
Expand Down Expand Up @@ -858,7 +858,7 @@ void logInternalError(@Nullable String message, @Nullable String details) {
} else {
messageWithDetails = message;
}
internalErrorService.handleInternalError(new ReportingLoggerAction.InternalError(messageWithDetails));
internalErrorService.handleInternalError(new InternalErrorServiceAction.InternalError(messageWithDetails));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package io.embrace.android.embracesdk.injection

import io.embrace.android.embracesdk.logging.EmbraceInternalErrorService
import io.embrace.android.embracesdk.logging.InternalErrorService
import io.embrace.android.embracesdk.logging.ReportingLoggerAction
import io.embrace.android.embracesdk.logging.InternalErrorServiceAction

/**
* Contains dependencies that are used to gain internal observability into how the SDK
* is performing.
*/
internal interface SdkObservabilityModule {
val internalErrorService: InternalErrorService
val reportingLoggerAction: ReportingLoggerAction
val reportingLoggerAction: InternalErrorServiceAction
}

internal class SdkObservabilityModuleImpl(
Expand All @@ -25,7 +25,7 @@ internal class SdkObservabilityModuleImpl(
)
}

override val reportingLoggerAction: ReportingLoggerAction by singleton {
ReportingLoggerAction(internalErrorService)
override val reportingLoggerAction: InternalErrorServiceAction by singleton {
InternalErrorServiceAction(internalErrorService)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ import java.util.concurrent.CopyOnWriteArrayList
// perform as fast as possible.
@Suppress("NOTHING_TO_INLINE")
internal class InternalEmbraceLogger {
private val loggerActions = CopyOnWriteArrayList<LoggerAction>(listOf(AndroidLoggingAction()))
private val logActions = CopyOnWriteArrayList<LogAction>(listOf(LogcatAction()))
private var threshold = Severity.INFO

interface LoggerAction {
internal fun interface LogAction {
fun log(msg: String, severity: Severity, throwable: Throwable?, logStacktrace: Boolean)
}

fun addLoggerAction(action: LoggerAction) {
loggerActions.add(action)
fun addLoggerAction(action: LogAction) {
logActions.add(action)
}

@JvmOverloads
Expand All @@ -45,12 +45,12 @@ internal class InternalEmbraceLogger {

// Log with INFO severity that always contains a throwable as an internal exception to be sent to Grafana
inline fun logInfoWithException(msg: String, throwable: Throwable? = null, logStacktrace: Boolean = false) {
log(msg, Severity.INFO, throwable ?: ReportingLoggerAction.NotAnException(msg), logStacktrace)
log(msg, Severity.INFO, throwable ?: InternalErrorServiceAction.NotAnException(msg), logStacktrace)
}

// Log with WARNING severity that always contains a throwable as an internal exception to be sent to Grafana
inline fun logWarningWithException(msg: String, throwable: Throwable? = null, logStacktrace: Boolean = false) {
log(msg, Severity.WARNING, throwable ?: ReportingLoggerAction.NotAnException(msg), logStacktrace)
log(msg, Severity.WARNING, throwable ?: InternalErrorServiceAction.NotAnException(msg), logStacktrace)
}

fun logSDKNotInitialized(action: String) {
Expand All @@ -74,7 +74,7 @@ internal class InternalEmbraceLogger {

fun log(msg: String, severity: Severity, throwable: Throwable?, logStacktrace: Boolean) {
if (shouldTriggerLoggerActions(severity)) {
loggerActions.forEach {
logActions.forEach {
it.log(msg, severity, throwable, logStacktrace)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ package io.embrace.android.embracesdk.logging
import io.embrace.android.embracesdk.config.ConfigService
import io.embrace.android.embracesdk.payload.LegacyExceptionError

/**
* Reports an internal error to Embrace. An internal error is defined as an exception that was
* caught within Embrace code & logged to [InternalEmbraceLogger].
*/
internal interface InternalErrorService {
fun setConfigService(configService: ConfigService?)
fun handleInternalError(throwable: Throwable)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@ package io.embrace.android.embracesdk.logging

import android.util.Log

internal class ReportingLoggerAction(
/**
* Sends a log message from Embrace's log implementation to [InternalErrorService],
* if it contains a throwable.
*/
internal class InternalErrorServiceAction(
private val internalErrorService: InternalErrorService
) : InternalEmbraceLogger.LoggerAction {
) : InternalEmbraceLogger.LogAction {

override fun log(
msg: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.embrace.android.embracesdk.logging

import android.util.Log
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger.Severity

internal const val EMBRACE_TAG = "[Embrace]"

/**
* Sends a log message from Embrace's log implementation to Logcat.
*/
internal class LogcatAction : InternalEmbraceLogger.LogAction {

override fun log(
msg: String,
severity: Severity,
throwable: Throwable?,
logStacktrace: Boolean
) {
val exception = throwable?.takeIf { logStacktrace }
when (severity) {
Severity.DEBUG -> Log.d(EMBRACE_TAG, msg, exception)
Severity.INFO -> Log.i(EMBRACE_TAG, msg, exception)
Severity.WARNING -> Log.w(EMBRACE_TAG, msg, exception)
Severity.ERROR -> Log.e(EMBRACE_TAG, msg, exception)
else -> Log.v(EMBRACE_TAG, msg, exception)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import io.embrace.android.embracesdk.comms.delivery.EmbraceCacheService.Companio
import io.embrace.android.embracesdk.comms.delivery.EmbraceCacheService.Companion.TEMP_COPY_SUFFIX
import io.embrace.android.embracesdk.comms.delivery.PendingApiCall
import io.embrace.android.embracesdk.comms.delivery.PendingApiCalls
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.fakes.FakeStorageService
import io.embrace.android.embracesdk.fakes.TestPlatformSerializer
import io.embrace.android.embracesdk.fakes.fakeSession
Expand All @@ -38,14 +38,14 @@ internal class EmbraceCacheServiceTest {

private lateinit var service: CacheService
private lateinit var storageManager: FakeStorageService
private lateinit var loggerAction: FakeLoggerAction
private lateinit var loggerAction: FakeLogAction
private lateinit var logger: InternalEmbraceLogger
private val serializer = TestPlatformSerializer()

@Before
fun setUp() {
storageManager = FakeStorageService()
loggerAction = FakeLoggerAction()
loggerAction = FakeLogAction()
logger = InternalEmbraceLogger().apply { addLoggerAction(loggerAction) }
service = EmbraceCacheService(
storageManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import io.embrace.android.embracesdk.comms.delivery.PendingApiCall
import io.embrace.android.embracesdk.comms.delivery.PendingApiCalls
import io.embrace.android.embracesdk.comms.delivery.SessionPurgeException
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.fakes.FakeStorageService
import io.embrace.android.embracesdk.fakes.fakeSession
import io.embrace.android.embracesdk.fixtures.testSessionMessage
Expand Down Expand Up @@ -50,7 +50,7 @@ internal class EmbraceDeliveryCacheManagerTest {
private lateinit var deliveryCacheManager: EmbraceDeliveryCacheManager
private lateinit var storageService: StorageService
private lateinit var cacheService: EmbraceCacheService
private lateinit var loggerAction: FakeLoggerAction
private lateinit var loggerAction: FakeLogAction
private lateinit var logger: InternalEmbraceLogger
private lateinit var fakeClock: FakeClock

Expand All @@ -61,7 +61,7 @@ internal class EmbraceDeliveryCacheManagerTest {
@Before
fun before() {
fakeClock = FakeClock(clockInit)
loggerAction = FakeLoggerAction()
loggerAction = FakeLogAction()
logger = InternalEmbraceLogger().apply { addLoggerAction(loggerAction) }
storageService = FakeStorageService()
cacheService = spyk(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.embrace.android.embracesdk.anr.detection

import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import org.junit.Assert.assertEquals
import org.junit.Before
Expand All @@ -10,12 +10,12 @@ internal class UnbalancedCallDetectorTest {

private lateinit var logger: InternalEmbraceLogger
private lateinit var detector: UnbalancedCallDetector
private lateinit var action: FakeLoggerAction
private lateinit var action: FakeLogAction
private val thread = Thread.currentThread()

@Before
fun setUp() {
action = FakeLoggerAction()
action = FakeLogAction()
logger = InternalEmbraceLogger().apply { addLoggerAction(action) }
detector = UnbalancedCallDetector(logger)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import io.embrace.android.embracesdk.arch.schema.PrivateSpan
import io.embrace.android.embracesdk.concurrency.BlockableExecutorService
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.FakeClock.Companion.DEFAULT_FAKE_CURRENT_TIME
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
import io.embrace.android.embracesdk.internal.spans.EmbraceSpanData
Expand Down Expand Up @@ -38,7 +38,7 @@ internal class AppStartupTraceEmitterTest {
private lateinit var clock: FakeClock
private lateinit var spanSink: SpanSink
private lateinit var spanService: SpanService
private lateinit var loggerAction: FakeLoggerAction
private lateinit var loggerAction: FakeLogAction
private lateinit var logger: InternalEmbraceLogger
private lateinit var backgroundWorker: BackgroundWorker
private lateinit var appStartupTraceEmitter: AppStartupTraceEmitter
Expand All @@ -56,7 +56,7 @@ internal class AppStartupTraceEmitterTest {
backgroundWorker
)
clock.tick(100L)
loggerAction = FakeLoggerAction()
loggerAction = FakeLogAction()
logger = InternalEmbraceLogger().apply { addLoggerAction(loggerAction) }
appStartupTraceEmitter = AppStartupTraceEmitter(
clock = initModule.openTelemetryClock,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.embrace.android.embracesdk.comms.delivery

import io.embrace.android.embracesdk.concurrency.ExecutionCoordinator
import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.fakes.FakeStorageService
import io.embrace.android.embracesdk.fakes.TestPlatformSerializer
import io.embrace.android.embracesdk.fixtures.testSessionMessage
Expand All @@ -18,15 +18,15 @@ internal class EmbraceCacheServiceConcurrentAccessTest {
private lateinit var embraceCacheService: EmbraceCacheService
private lateinit var storageService: FakeStorageService
private lateinit var serializer: TestPlatformSerializer
private lateinit var loggerAction: FakeLoggerAction
private lateinit var loggerAction: FakeLogAction
private lateinit var logger: InternalEmbraceLogger
private lateinit var executionCoordinator: ExecutionCoordinator

@Before
fun setUp() {
storageService = FakeStorageService()
serializer = TestPlatformSerializer()
loggerAction = FakeLoggerAction()
loggerAction = FakeLogAction()
logger = InternalEmbraceLogger().apply { addLoggerAction(loggerAction) }
embraceCacheService = EmbraceCacheService(
storageService,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.embrace.android.embracesdk.concurrency

import io.embrace.android.embracesdk.fakes.FakeLoggerAction
import io.embrace.android.embracesdk.fakes.FakeLogAction
import io.embrace.android.embracesdk.internal.utils.Provider
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
Expand All @@ -17,7 +17,7 @@ import java.util.concurrent.atomic.AtomicInteger
*/
internal class ExecutionCoordinator(
private val executionModifiers: ExecutionModifiers,
private val errorLogsProvider: Provider<List<FakeLoggerAction.LogMessage>>?
private val errorLogsProvider: Provider<List<FakeLogAction.LogMessage>>?
) {
private val thread1 = SingleThreadTestScheduledExecutor()
private val thread2 = SingleThreadTestScheduledExecutor()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger.Severity
import java.util.LinkedList

internal class FakeLoggerAction : InternalEmbraceLogger.LoggerAction {
internal class FakeLogAction : InternalEmbraceLogger.LogAction {

val msgQueue = LinkedList<LogMessage>()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import io.embrace.android.embracesdk.fakes.FakeProcessStateService
import io.embrace.android.embracesdk.injection.SdkObservabilityModule
import io.embrace.android.embracesdk.logging.EmbraceInternalErrorService
import io.embrace.android.embracesdk.logging.InternalErrorService
import io.embrace.android.embracesdk.logging.ReportingLoggerAction
import io.embrace.android.embracesdk.logging.InternalErrorServiceAction

internal class FakeSdkObservabilityModule(
override val internalErrorService: InternalErrorService = EmbraceInternalErrorService(
Expand All @@ -14,6 +14,6 @@ internal class FakeSdkObservabilityModule(
)
) : SdkObservabilityModule {

override val reportingLoggerAction: ReportingLoggerAction
override val reportingLoggerAction: InternalErrorServiceAction
get() = TODO("Not yet implemented")
}
Loading

0 comments on commit e67ea60

Please sign in to comment.