diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 01fa36aa9d..1d9820ed8a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -33,6 +33,7 @@ import coil3.request.crossfade import coil3.util.DebugLogger import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase +import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore @@ -55,6 +56,7 @@ import eu.kanade.tachiyomi.util.system.GLUtil import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.launchIO import eu.kanade.tachiyomi.util.system.localeContext +import eu.kanade.tachiyomi.util.system.nameWithoutExtension import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.setToDefault import eu.kanade.tachiyomi.util.system.setupFileLog @@ -88,14 +90,6 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F private val disableIncognitoReceiver = DisableIncognitoReceiver() - private fun buildWritersToAdd( - logPath: Path?, - ) = buildList { - if (!BuildConfig.DEBUG) add(CrashlyticsLogWriter()) - - if (logPath != null) add(Logger.setupFileLog(logPath, BuildConfig.BUILD_TYPE)) - } - @SuppressLint("LaunchActivityFromNotification") override fun onCreate() { super.onCreate() @@ -119,8 +113,7 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F val scope = ProcessLifecycleOwner.get().lifecycleScope - val logPath = storageManager.getLogsDirectory()?.filePath?.let { path -> Path(path) } - Logger.setToDefault(buildLogWritersToAdd(logPath)) + Logger.setToDefault(buildLogWritersToAdd(storageManager.getLogsFile())) basePreferences.crashReport().changes() .onEach { @@ -291,11 +284,18 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F } fun buildLogWritersToAdd( - logPath: Path?, + logFile: UniFile?, ) = buildList { if (!BuildConfig.DEBUG) add(CrashlyticsLogWriter()) - // if (logPath != null) add(Logger.setupFileLog(logPath, BuildConfig.BUILD_TYPE)) + //val fileName = logFile?.nameWithoutExtension + //val filePath = logFile?.parentFile?.filePath?.let { path -> Path(path) } + //if (filePath != null && fileName != null) add( + // Logger.setupFileLog( + // logFileName = fileName, + // logPath = filePath, + // ) + //) } private const val ACTION_DISABLE_INCOGNITO_MODE = "tachi.action.DISABLE_INCOGNITO_MODE" diff --git a/app/src/main/java/yokai/domain/storage/StorageManager.kt b/app/src/main/java/yokai/domain/storage/StorageManager.kt index 4c84b42e1c..4ab37dc12e 100644 --- a/app/src/main/java/yokai/domain/storage/StorageManager.kt +++ b/app/src/main/java/yokai/domain/storage/StorageManager.kt @@ -4,9 +4,13 @@ import android.content.Context import androidx.core.net.toUri import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.buildLogWritersToAdd import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.system.setToDefault +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.Channel @@ -46,16 +50,17 @@ class StorageManager( } parent.createDirectory(COVERS_PATH) parent.createDirectory(PAGES_PATH) - parent.createDirectory(LOGS_PATH)?.also { - try { - Logger.setToDefault(buildLogWritersToAdd(it.filePath?.let { path -> Path(path) })) - } catch (e: Exception) { - // Just in case something went horribly wrong - Logger.setToDefault(buildLogWritersToAdd(null)) - Logger.e(e) { "Something went wrong while trying to setup log file" } - } - } + parent.createDirectory(LOGS_PATH) } + + try { + Logger.setToDefault(buildLogWritersToAdd(getLogsFile())) + } catch (e: Exception) { + // Just in case something went horribly wrong + Logger.setToDefault(buildLogWritersToAdd(null)) + Logger.e(e) { "Something went wrong while trying to setup log file" } + } + _changes.send(Unit) } .launchIn(scope) @@ -93,6 +98,11 @@ class StorageManager( fun getLogsDirectory(): UniFile? { return baseDir?.createDirectory(LOGS_PATH) } + + fun getLogsFile(): UniFile? { + val date = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date()) + return getLogsDirectory()?.createFile("${date}-${BuildConfig.BUILD_TYPE}.log") + } } private const val BACKUPS_PATH = "backup" diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt index 1dcc6850d2..dffc72481f 100644 --- a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt @@ -5,9 +5,6 @@ import co.touchlab.kermit.Logger import co.touchlab.kermit.io.RollingFileLogWriter import co.touchlab.kermit.io.RollingFileLogWriterConfig import co.touchlab.kermit.platformLogWriter -import kotlinx.datetime.Clock -import kotlinx.datetime.TimeZone -import kotlinx.datetime.todayIn import kotlinx.io.files.Path fun Logger.w(e: Throwable) = w(e) { "Something is not right..." } @@ -20,12 +17,12 @@ fun Logger.setToDefault( Logger.setTag("Yokai") } -fun Logger.setupFileLog(logPath: Path, buildType: String? = null): LogWriter { - val date = Clock.System.todayIn(TimeZone.currentSystemDefault()) +fun Logger.setupFileLog(logFileName: String, logPath: Path): LogWriter { return RollingFileLogWriter( config = RollingFileLogWriterConfig( - logFileName = date.toString() + if (buildType != null) "-$buildType" else "" + ".log", + logFileName = logFileName, logFilePath = logPath, + maxLogFiles = 1, ) ) }