Upgrade logging, now maps timber to XLog, new logging functions
This commit is contained in:
@@ -119,22 +119,22 @@ class EnhancedFilePrinter internal constructor(
|
||||
/**
|
||||
* The file name generator for log file.
|
||||
*/
|
||||
private var fileNameGenerator: FileNameGenerator? = null
|
||||
var fileNameGenerator: FileNameGenerator? = null
|
||||
|
||||
/**
|
||||
* The backup strategy for log file.
|
||||
*/
|
||||
private var backupStrategy: BackupStrategy? = null
|
||||
var backupStrategy: BackupStrategy? = null
|
||||
|
||||
/**
|
||||
* The clean strategy for log file.
|
||||
*/
|
||||
private var cleanStrategy: CleanStrategy? = null
|
||||
var cleanStrategy: CleanStrategy? = null
|
||||
|
||||
/**
|
||||
* The flattener when print a log.
|
||||
*/
|
||||
private var flattener: Flattener? = null
|
||||
var flattener: Flattener? = null
|
||||
|
||||
/**
|
||||
* Set the file name generator for log file.
|
||||
@@ -194,6 +194,12 @@ class EnhancedFilePrinter internal constructor(
|
||||
flattener ?: DefaultsFactory.createFlattener2()
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
operator fun invoke(folderPath: String, block: Builder.() -> Unit): EnhancedFilePrinter {
|
||||
return Builder(folderPath).apply(block).build()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private data class LogItem(
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
package exh.log
|
||||
|
||||
import android.util.Log
|
||||
import com.elvishew.xlog.Logger
|
||||
import com.elvishew.xlog.XLog
|
||||
import com.elvishew.xlog.LogLevel as XLogLevel
|
||||
|
||||
fun Any.xLog(): Logger = XLog.tag(this::class.java.simpleName).build()
|
||||
|
||||
fun Any.xLogStack(): Logger = XLog.tag(this::class.java.simpleName).enableStackTrace(0).build()
|
||||
|
||||
fun Any.xLogE(log: String) = xLog().e(log)
|
||||
fun Any.xLogW(log: String) = xLog().w(log)
|
||||
fun Any.xLogD(log: String) = xLog().d(log)
|
||||
fun Any.xLogI(log: String) = xLog().i(log)
|
||||
fun Any.xLog(logLevel: LogLevel, log: String) = xLog().log(logLevel.int, log)
|
||||
fun Any.xLogJson(log: String) = xLog().json(log)
|
||||
fun Any.xLogXML(log: String) = xLog().xml(log)
|
||||
|
||||
fun Any.xLogE(log: Throwable) = xLogStack().e(log)
|
||||
fun Any.xLogW(log: Throwable) = xLogStack().w(log)
|
||||
fun Any.xLogD(log: Throwable) = xLogStack().d(log)
|
||||
fun Any.xLogI(log: Throwable) = xLogStack().i(log)
|
||||
fun Any.xLog(logLevel: LogLevel, log: Throwable) = xLogStack().log(logLevel.int, log)
|
||||
|
||||
fun Any.xLogE(log: String, e: Throwable) = xLogStack().e(log, e)
|
||||
fun Any.xLogW(log: String, e: Throwable) = xLogStack().w(log, e)
|
||||
fun Any.xLogD(log: String, e: Throwable) = xLogStack().d(log, e)
|
||||
fun Any.xLogI(log: String, e: Throwable) = xLogStack().i(log, e)
|
||||
fun Any.xLog(logLevel: LogLevel, log: String, e: Throwable) = xLogStack().log(logLevel.int, log, e)
|
||||
|
||||
fun Any.xLogE(log: Any?) = xLog().let { if (log == null) it.e("null") else it.e(log) }
|
||||
fun Any.xLogW(log: Any?) = xLog().let { if (log == null) it.w("null") else it.w(log) }
|
||||
fun Any.xLogD(log: Any?) = xLog().let { if (log == null) it.d("null") else it.d(log) }
|
||||
fun Any.xLogI(log: Any?) = xLog().let { if (log == null) it.i("null") else it.i(log) }
|
||||
fun Any.xLog(logLevel: LogLevel, log: Any?) = xLog().let { if (log == null) it.log(logLevel.int, "null") else it.log(logLevel.int, log) }
|
||||
|
||||
/*fun Any.xLogE(vararg logs: Any) = xLog().e(logs)
|
||||
fun Any.xLogW(vararg logs: Any) = xLog().w(logs)
|
||||
fun Any.xLogD(vararg logs: Any) = xLog().d(logs)
|
||||
fun Any.xLogI(vararg logs: Any) = xLog().i(logs)
|
||||
fun Any.xLog(logLevel: LogLevel, vararg logs: Any) = xLog().log(logLevel.int, logs)*/
|
||||
|
||||
fun Any.xLogE(format: String, vararg args: Any?) = xLog().e(format, *args)
|
||||
fun Any.xLogW(format: String, vararg args: Any?) = xLog().w(format, *args)
|
||||
fun Any.xLogD(format: String, vararg args: Any?) = xLog().d(format, *args)
|
||||
fun Any.xLogI(format: String, vararg args: Any?) = xLog().i(format, *args)
|
||||
fun Any.xLog(logLevel: LogLevel, format: String, vararg args: Any) = xLog().log(logLevel.int, format, *args)
|
||||
|
||||
sealed class LogLevel(val int: Int, val androidLevel: Int) {
|
||||
object None : LogLevel(XLogLevel.NONE, Log.ASSERT)
|
||||
object Error : LogLevel(XLogLevel.ERROR, Log.ERROR)
|
||||
object Warn : LogLevel(XLogLevel.WARN, Log.WARN)
|
||||
object Info : LogLevel(XLogLevel.INFO, Log.INFO)
|
||||
object Debug : LogLevel(XLogLevel.DEBUG, Log.DEBUG)
|
||||
object Verbose : LogLevel(XLogLevel.VERBOSE, Log.VERBOSE)
|
||||
object All : LogLevel(XLogLevel.ALL, Log.VERBOSE)
|
||||
|
||||
val name get() = getLevelName(this)
|
||||
val shortName get() = getLevelShortName(this)
|
||||
|
||||
companion object {
|
||||
fun getLevelName(logLevel: LogLevel): String = XLogLevel.getLevelName(logLevel.int)
|
||||
fun getLevelShortName(logLevel: LogLevel): String = XLogLevel.getShortLevelName(logLevel.int)
|
||||
|
||||
fun values() = listOf(
|
||||
None,
|
||||
Error,
|
||||
Warn,
|
||||
Info,
|
||||
Debug,
|
||||
Verbose,
|
||||
All
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package exh.log
|
||||
|
||||
import android.util.Log
|
||||
import com.elvishew.xlog.XLog
|
||||
import timber.log.Timber
|
||||
|
||||
class XLogTree : Timber.DebugTree() {
|
||||
override fun log(priority: Int, tag: String?, message: String, throwable: Throwable?) {
|
||||
if (tag != null) {
|
||||
if (throwable != null) {
|
||||
XLog.tag(tag).log(priority.toXLogLevel(), message, throwable)
|
||||
} else {
|
||||
XLog.tag(tag).log(priority.toXLogLevel(), message)
|
||||
}
|
||||
} else {
|
||||
if (throwable != null) {
|
||||
XLog.log(priority.toXLogLevel(), message, throwable)
|
||||
} else {
|
||||
XLog.log(priority.toXLogLevel(), message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun Int.toXLogLevel(): Int {
|
||||
return when (this) {
|
||||
Log.ASSERT -> LogLevel.None.int
|
||||
Log.ERROR -> LogLevel.Error.int
|
||||
Log.WARN -> LogLevel.Warn.int
|
||||
Log.INFO -> LogLevel.Info.int
|
||||
Log.DEBUG -> LogLevel.Debug.int
|
||||
Log.VERBOSE -> LogLevel.Verbose.int
|
||||
else -> LogLevel.All.int
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user