Skip to content

Instantly share code, notes, and snippets.

View Krillsson's full-sized avatar

Christian Krillsson

  • Volvo Cars
  • Stockholm, Sweden
View GitHub Profile
@Krillsson
Krillsson / code.gradle
Last active December 22, 2022 11:39
Log categories in buildConfigField basic
defaultConfig {
buildConfigField "String[]", "LOG_CATEGORIES", "{" +
"\"Default\"," +
"\"Push\"," +
"\"Registration\"" +
"}"
// ...
}
@Krillsson
Krillsson / BuildConfigCategoryFilter.kt
Last active December 22, 2022 11:45
Category filter that fetches categories from BuildConfig.java
object BuildConfigCategoryFilter: CategoryFilter() {
override val categories: List<Category> = BuildConfig.LOG_CATEGORIES
.map { Category(it) }
}
@Krillsson
Krillsson / code.kt
Created December 22, 2022 11:45
Setting up Sensible Logging with BuildConfigCategoryFilter
if (BuildConfig.DEBUG) {
val filterCombination = Filter.level(Level.WARN) or BuildConfigCategoryFilter
val channels = Log.Setup.Configuration()
.addLogCatChannel(filter = filterCombination, default = true)
.create()
Log.Setup.addChannels(channels)
}
@Krillsson
Krillsson / code.gradle
Created December 22, 2022 11:47
Safely read properties in Gradle
static def readProperty(propertiesFile, key, defaultValue){
def properties = new Properties()
if (propertiesFile.canRead()) {
properties.load(propertiesFile.newDataInputStream())
properties.get(key, defaultValue)
} else {
defaultValue
}
}
@Krillsson
Krillsson / code.gradle
Created December 22, 2022 12:36
Log categories in buildConfigField from local.properties
defaultConfig {
buildConfigField "String[]", "LOG_CATEGORIES", readProperty(
project.rootProject.file('local.properties'),
"log.categories",
"{\"Default\"}"
)
// ...
}
@Krillsson
Krillsson / CrashlyticsChannel.kt
Last active January 25, 2023 15:02
Channel to report errors to Firebase Crashlytics
class CrashlyticsChannel : ReleaseChannel() {
override val filter: Filter = Filter.level(Level.ERROR)
override val id: Int = Channels.Crashlytics
override val default: Boolean = true
override fun print(line: Line) {
FirebaseCrashlytics.getInstance()
.log("${line.level.name} ${line.category}: ${line.message}")
line.throwable?.let { error ->
Filter.level(Level.ERROR) or Filter.categories(
listOf(
Categories.UI,
Categories.User,
Categories.Push
)
)
val channels = if(BuildConfig.DEBUG) {
val categoriesFilter = Filter.categories(listOf(
Categories.Default,
// ...
))
val filterCombination = Filter.level(Level.WARN) or categoriesFilter
Log.Setup.Configuration()
.addLogCatChannel(filter = filterCombination)
.create()
} else {