Skip to content

Instantly share code, notes, and snippets.

@Morteza-QN
Created April 21, 2024 12:11
Show Gist options
  • Save Morteza-QN/d5ad9620c19faceb05b999a6120db815 to your computer and use it in GitHub Desktop.
Save Morteza-QN/d5ad9620c19faceb05b999a6120db815 to your computer and use it in GitHub Desktop.
logger on file
import org.jetbrains.annotations.NonNls
import timber.log.Timber
import java.io.File
class Logger {
private lateinit var cacheDir: File
companion object {
private fun initializeTimber(logFile: File) {
Timber.plant(TimberFileTree(logFile))
}
fun v(@NonNls message: String) = Timber.v(message)
fun d(@NonNls message: String) = Timber.d(message)
fun i(@NonNls message: String) = Timber.i(message)
fun w(@NonNls message: String) = Timber.w(message)
fun e(@NonNls message: String) = Timber.e(message)
fun wtf(@NonNls message: String) = Timber.wtf(message)
}
fun onCreate(cacheDir: File) {
this.cacheDir = cacheDir
cleanLogFile()
initializeTimber(getLogFile())
}
fun onClearCache() {
cleanLogFile()
}
fun onDestroy() {
deleteLogFile()
}
private fun getLogFile(): File {
return File(cacheDir.absolutePath + "/log.txt")
}
private fun cleanLogFile() {
// force clean previous log
getLogFile().writeText("")
}
private fun deleteLogFile() {
getLogFile().delete()
}
}
import android.util.Log
import timber.log.Timber
import java.io.File
class TimberFileTree(private val log: File) : Timber.Tree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
when (priority) {
Log.VERBOSE -> log.appendText("V: ")
Log.DEBUG -> log.appendText("D: ")
Log.INFO -> log.appendText("I: ")
Log.WARN -> log.appendText("W: ")
Log.ERROR -> log.appendText("E: ")
Log.ASSERT -> log.appendText("A: ")
}
log.appendText(message + "\n")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment