Skip to content

Commit

Permalink
Bugfix: android extensions fixed (getAllExistingLogFiles() + getLates…
Browse files Browse the repository at this point in the history
…tLogFile()) + binary comp checker added
  • Loading branch information
MFlisar committed Feb 3, 2025
1 parent f69999a commit 439a06d
Show file tree
Hide file tree
Showing 35 changed files with 1,175 additions and 37 deletions.
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ plugins {
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.parcelize) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.binary.compatibility.validator) apply false
}
2 changes: 2 additions & 0 deletions demo/android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ dependencies {

implementation(androidx.activity.compose)

implementation(kotlinx.io.core)

// ------------------------
// Library
// ------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.michaelflisar.toolbox.androiddemoapp.composables.rememberDemoExpanded
import com.michaelflisar.toolbox.classes.ToastHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.io.files.SystemFileSystem

class MainActivity : com.michaelflisar.toolbox.androiddemoapp.DemoActivity(
scrollableContent = false
Expand All @@ -51,7 +52,6 @@ class MainActivity : com.michaelflisar.toolbox.androiddemoapp.DemoActivity(
val showComposeLogView = rememberSaveable { mutableStateOf(false) }
val showComposeLogView2 = rememberSaveable { mutableStateOf(false) }


DemoAppThemeRegionDetailed(
state = regionState
)
Expand Down Expand Up @@ -79,45 +79,64 @@ class MainActivity : com.michaelflisar.toolbox.androiddemoapp.DemoActivity(
DemoCollapsibleRegion(
title = "Actions", regionId = 2, state = regionState
) {
OutlinedTextField(modifier = Modifier.fillMaxWidth(),
OutlinedTextField(
modifier = Modifier.fillMaxWidth(),
value = mail,
onValueChange = { mail = it },
label = {
Text("Receiver Mail")
})
OutlinedButton(modifier = Modifier.fillMaxWidth(), onClick = {
scope.launch {
DemoLogging.FILE_LOGGING_SETUP.clearLogFiles()
L.d { "TEST-LOG - Files just have been deleted!" }
}
}) {
)
OutlinedButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
scope.launch {
DemoLogging.FILE_LOGGING_SETUP.clearLogFiles()
L.d { "TEST-LOG - Files just have been deleted!" }
}
}
) {
Text("Delete Log Files")
}
OutlinedButton(modifier = Modifier.fillMaxWidth(), onClick = {
mail.takeIf { it.isNotEmpty() }?.let {
L.sendFeedback(
context = context,
receiver = it,
attachments = listOfNotNull(DemoLogging.FILE_LOGGING_SETUP.getLatestLogFile())
OutlinedButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
mail.takeIf { it.isNotEmpty() }?.let {
L.sendFeedback(
context = context,
receiver = it,
attachments = listOfNotNull(DemoLogging.FILE_LOGGING_SETUP.getLatestLogFile())
)
} ?: ToastHelper.show(
context, "You must provide a valid email address to test this function!"
)
} ?: ToastHelper.show(
context, "You must provide a valid email address to test this function!"
)
}) {
}
) {
Text("Send log file via mail")
}
OutlinedButton(modifier = Modifier.fillMaxWidth(), onClick = {
L.d { "Logging something..." }
}) {
OutlinedButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
L.d { "Logging something..." }
val path = DemoLogging.FILE_LOGGING_SETUP.getLatestLogFilePath()
val file = DemoLogging.FILE_LOGGING_SETUP.getLatestLogFile()
L.d { "Log file - path = ${path} | exists = ${path?.let { SystemFileSystem.exists(it) }}" }
L.d { "Log file - file = ${file?.absolutePath} | exists = ${file?.exists()}" }

}
) {
Text("Log something")
}
OutlinedButton(modifier = Modifier.fillMaxWidth(), onClick = {
scope.launch(Dispatchers.IO) {
(1..100).forEach {
L.d { "Logging a lot $it..." }
OutlinedButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
scope.launch(Dispatchers.IO) {
(1..100).forEach {
L.d { "Logging a lot $it..." }
}
}
}
}) {
) {
Text("Log a lot")
}
}
Expand Down
3 changes: 0 additions & 3 deletions demo/desktop/settings.preferences_pb

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import androidx.compose.ui.window.rememberDialogState
import androidx.compose.ui.window.rememberWindowState
import com.michaelflisar.lumberjack.core.L
import com.michaelflisar.lumberjack.core.getAllExistingLogFiles
import com.michaelflisar.lumberjack.core.getLatestLogFile
import com.michaelflisar.lumberjack.extensions.composeviewer.LumberjackDialog
import com.michaelflisar.lumberjack.implementation.LumberjackLogger
import com.michaelflisar.lumberjack.implementation.plant
Expand All @@ -45,7 +46,8 @@ fun main() {
// 2) install loggers
L.plant(ConsoleLogger())
val setup = FileLoggerSetup.Daily.create(
folder = File(System.getProperty("user.dir"))
folder = File(System.getProperty("user.dir")),
fileExtension = "txt"
)
//val setup2= FileLoggerSetup.SingleFile.create(
// File(System.getProperty("user.dir"), "log.txt")
Expand Down Expand Up @@ -87,6 +89,14 @@ fun main() {
L.d { "Button with debug log was clicked" }
L.tag("MAIN-TAG").d { "Button with debug log was clicked" }

val file = setup.getLatestLogFile()
L.d { "Log file - file = ${file?.absolutePath} | ${file?.exists()}" }

val files = setup.getAllExistingLogFiles()
files.forEach {
L.d { "Log files - fileX = ${it.absolutePath} | ${it.exists()}" }
}


delay(1000)
recheckLogFiles.value++
Expand Down
4 changes: 4 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ kotlin = "2.1.0"
dokka = "1.9.20"
gradle-maven-publish-plugin = "0.30.0"
compose = "1.7.1"
binary-compatibility-validator = "0.17.0"

[plugins]

Expand All @@ -23,6 +24,9 @@ kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization"
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
gradle-maven-publish-plugin = { id = "com.vanniktech.maven.publish.base", version.ref = "gradle-maven-publish-plugin" }

# binary compatibility
binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" }

# compose
compose = { id = "org.jetbrains.compose", version.ref = "compose" }

Expand Down
96 changes: 96 additions & 0 deletions library/core/api/android/core.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
public abstract class com/michaelflisar/lumberjack/core/AbstractLogger {
public fun <init> ()V
public abstract fun callStackCorrection (I)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public final fun d (Ljava/lang/Throwable;)V
public final fun d (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun d (Lkotlin/jvm/functions/Function0;)V
public abstract fun doLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Throwable;)V
public final fun e (Ljava/lang/Throwable;)V
public final fun e (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun e (Lkotlin/jvm/functions/Function0;)V
public abstract fun enable (Z)V
public final fun i (Ljava/lang/Throwable;)V
public final fun i (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun i (Lkotlin/jvm/functions/Function0;)V
public abstract fun isEnabled ()Z
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function4;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Lkotlin/jvm/functions/Function0;)V
public final fun logIf (Lkotlin/jvm/functions/Function0;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public abstract fun tag (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public final fun v (Ljava/lang/Throwable;)V
public final fun v (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun v (Lkotlin/jvm/functions/Function0;)V
public final fun w (Ljava/lang/Throwable;)V
public final fun w (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun w (Lkotlin/jvm/functions/Function0;)V
public final fun wtf (Ljava/lang/Throwable;)V
public final fun wtf (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun wtf (Lkotlin/jvm/functions/Function0;)V
}

public final class com/michaelflisar/lumberjack/core/FileLoggingExtensionsKt {
public static final fun getAllExistingLogFiles (Lcom/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup;)Ljava/util/List;
public static final fun getLatestLogFile (Lcom/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup;)Ljava/io/File;
}

public final class com/michaelflisar/lumberjack/core/L : com/michaelflisar/lumberjack/core/AbstractLogger {
public static final field INSTANCE Lcom/michaelflisar/lumberjack/core/L;
public fun callStackCorrection (I)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public fun doLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Throwable;)V
public fun enable (Z)V
public final fun init (Lcom/michaelflisar/lumberjack/core/AbstractLogger;)V
public fun isEnabled ()Z
public fun tag (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
}

public final class com/michaelflisar/lumberjack/core/classes/CoreUtil {
public static final field INSTANCE Lcom/michaelflisar/lumberjack/core/classes/CoreUtil;
public final fun getRealSubject (Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
}

public final class com/michaelflisar/lumberjack/core/classes/Level : java/lang/Enum {
public static final field DEBUG Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field ERROR Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field INFO Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field NONE Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field VERBOSE Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field WARN Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field WTF Lcom/michaelflisar/lumberjack/core/classes/Level;
public final fun getColor ()Ljava/lang/Integer;
public final fun getColorDark ()Ljava/lang/Integer;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public final fun getOrder ()I
public final fun getShortcut ()Ljava/lang/String;
public static fun valueOf (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/classes/Level;
public static fun values ()[Lcom/michaelflisar/lumberjack/core/classes/Level;
}

public final class com/michaelflisar/lumberjack/core/classes/LevelExtensionsKt {
public static final fun getPriority (Lcom/michaelflisar/lumberjack/core/classes/Level;)I
public static final fun getTextColor (Lcom/michaelflisar/lumberjack/core/classes/Level;I)I
public static final fun getTitleColor (Lcom/michaelflisar/lumberjack/core/classes/Level;I)I
}

public abstract interface class com/michaelflisar/lumberjack/core/interfaces/IFileConverter : android/os/Parcelable {
public abstract fun formatLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Ljava/lang/String;
public abstract fun parseFile (Ljava/util/List;)Ljava/util/List;
}

public final class com/michaelflisar/lumberjack/core/interfaces/IFileConverter$Entry {
public fun <init> (ILjava/util/List;Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;)V
public final fun getDate ()Ljava/lang/String;
public final fun getLevel ()Lcom/michaelflisar/lumberjack/core/classes/Level;
public final fun getLineNumber ()I
public final fun getLines ()Ljava/util/List;
public final fun setLines (Ljava/util/List;)V
}

public abstract interface class com/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup : android/os/Parcelable {
public abstract fun clearLogFiles (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public abstract fun getAllExistingLogFilePaths ()Ljava/util/List;
public abstract fun getFileConverter ()Lcom/michaelflisar/lumberjack/core/interfaces/IFileConverter;
public abstract fun getLatestLogFilePath ()Lkotlinx/io/files/Path;
}

85 changes: 85 additions & 0 deletions library/core/api/jvm/core.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
public abstract class com/michaelflisar/lumberjack/core/AbstractLogger {
public fun <init> ()V
public abstract fun callStackCorrection (I)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public final fun d (Ljava/lang/Throwable;)V
public final fun d (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun d (Lkotlin/jvm/functions/Function0;)V
public abstract fun doLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Throwable;)V
public final fun e (Ljava/lang/Throwable;)V
public final fun e (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun e (Lkotlin/jvm/functions/Function0;)V
public abstract fun enable (Z)V
public final fun i (Ljava/lang/Throwable;)V
public final fun i (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun i (Lkotlin/jvm/functions/Function0;)V
public abstract fun isEnabled ()Z
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function4;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun log (Lcom/michaelflisar/lumberjack/core/classes/Level;Lkotlin/jvm/functions/Function0;)V
public final fun logIf (Lkotlin/jvm/functions/Function0;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public abstract fun tag (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public final fun v (Ljava/lang/Throwable;)V
public final fun v (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun v (Lkotlin/jvm/functions/Function0;)V
public final fun w (Ljava/lang/Throwable;)V
public final fun w (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun w (Lkotlin/jvm/functions/Function0;)V
public final fun wtf (Ljava/lang/Throwable;)V
public final fun wtf (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function0;)V
public final fun wtf (Lkotlin/jvm/functions/Function0;)V
}

public final class com/michaelflisar/lumberjack/core/FileLoggingExtensionsKt {
public static final fun getAllExistingLogFiles (Lcom/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup;)Ljava/util/List;
public static final fun getLatestLogFile (Lcom/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup;)Ljava/io/File;
}

public final class com/michaelflisar/lumberjack/core/L : com/michaelflisar/lumberjack/core/AbstractLogger {
public static final field INSTANCE Lcom/michaelflisar/lumberjack/core/L;
public fun callStackCorrection (I)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
public fun doLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Throwable;)V
public fun enable (Z)V
public final fun init (Lcom/michaelflisar/lumberjack/core/AbstractLogger;)V
public fun isEnabled ()Z
public fun tag (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/AbstractLogger;
}

public final class com/michaelflisar/lumberjack/core/classes/Level : java/lang/Enum {
public static final field DEBUG Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field ERROR Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field INFO Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field NONE Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field VERBOSE Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field WARN Lcom/michaelflisar/lumberjack/core/classes/Level;
public static final field WTF Lcom/michaelflisar/lumberjack/core/classes/Level;
public final fun getColor ()Ljava/lang/Integer;
public final fun getColorDark ()Ljava/lang/Integer;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public final fun getOrder ()I
public final fun getShortcut ()Ljava/lang/String;
public static fun valueOf (Ljava/lang/String;)Lcom/michaelflisar/lumberjack/core/classes/Level;
public static fun values ()[Lcom/michaelflisar/lumberjack/core/classes/Level;
}

public abstract interface class com/michaelflisar/lumberjack/core/interfaces/IFileConverter : dev/icerock/moko/parcelize/Parcelable {
public abstract fun formatLog (Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Ljava/lang/String;
public abstract fun parseFile (Ljava/util/List;)Ljava/util/List;
}

public final class com/michaelflisar/lumberjack/core/interfaces/IFileConverter$Entry {
public fun <init> (ILjava/util/List;Lcom/michaelflisar/lumberjack/core/classes/Level;Ljava/lang/String;)V
public final fun getDate ()Ljava/lang/String;
public final fun getLevel ()Lcom/michaelflisar/lumberjack/core/classes/Level;
public final fun getLineNumber ()I
public final fun getLines ()Ljava/util/List;
public final fun setLines (Ljava/util/List;)V
}

public abstract interface class com/michaelflisar/lumberjack/core/interfaces/IFileLoggingSetup : dev/icerock/moko/parcelize/Parcelable {
public abstract fun clearLogFiles (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public abstract fun getAllExistingLogFilePaths ()Ljava/util/List;
public abstract fun getFileConverter ()Lcom/michaelflisar/lumberjack/core/interfaces/IFileConverter;
public abstract fun getLatestLogFilePath ()Lkotlinx/io/files/Path;
}

1 change: 1 addition & 0 deletions library/core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ plugins {
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.dokka)
alias(libs.plugins.gradle.maven.publish.plugin)
alias(libs.plugins.binary.compatibility.validator)
}

// -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@ package com.michaelflisar.lumberjack.core
import com.michaelflisar.lumberjack.core.interfaces.IFileLoggingSetup
import java.io.File

fun IFileLoggingSetup.getAllExistingLogFiles() = getAllExistingLogFilePaths().map {
File(this.toString())
}
fun IFileLoggingSetup.getLatestLogFile() = getLatestLogFilePath()?.let{
File(this.toString())
}
fun IFileLoggingSetup.getAllExistingLogFiles() = getAllExistingLogFilePaths().map { File(it.toString()) }
fun IFileLoggingSetup.getLatestLogFile() = getLatestLogFilePath()?.let { File(it.toString()) }
Loading

0 comments on commit 439a06d

Please sign in to comment.