FairEmail/app/src/main/java/com/bugsnag/android/BreadcrumbInternal.kt

43 lines
1.4 KiB
Kotlin
Raw Normal View History

2021-05-15 20:03:05 +00:00
package com.bugsnag.android
2022-11-12 20:57:15 +00:00
import com.bugsnag.android.internal.StringUtils
import com.bugsnag.android.internal.TrimMetrics
2021-05-15 20:03:05 +00:00
import java.io.IOException
import java.util.Date
/**
* In order to understand what happened in your application before each crash, it can be helpful
* to leave short log statements that we call breadcrumbs. Breadcrumbs are
* attached to a crash to help diagnose what events lead to the error.
*/
internal class BreadcrumbInternal internal constructor(
2021-07-29 19:08:19 +00:00
@JvmField var message: String,
@JvmField var type: BreadcrumbType,
@JvmField var metadata: MutableMap<String, Any?>?,
@JvmField val timestamp: Date = Date()
) : JsonStream.Streamable { // JvmField allows direct field access optimizations
2021-05-15 20:03:05 +00:00
internal constructor(message: String) : this(
message,
BreadcrumbType.MANUAL,
mutableMapOf(),
Date()
)
2022-11-12 20:57:15 +00:00
internal fun trimMetadataStringsTo(maxStringLength: Int): TrimMetrics {
val metadata = this.metadata ?: return TrimMetrics(0, 0)
return StringUtils.trimStringValuesTo(maxStringLength, metadata)
}
2021-05-15 20:03:05 +00:00
@Throws(IOException::class)
override fun toStream(writer: JsonStream) {
writer.beginObject()
2021-05-19 17:43:50 +00:00
writer.name("timestamp").value(timestamp)
2021-05-15 20:03:05 +00:00
writer.name("name").value(message)
writer.name("type").value(type.toString())
writer.name("metaData")
writer.value(metadata, true)
writer.endObject()
}
}