Filter
Exclude
Time range
-
Near
Plant this Timber Tree: // BetterTimberDebugTree.kt package com.evc.common import com.squareup.moshi.* import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import timber.log.Timber import java.util.regex.Pattern class BetterTimberDebugTree(private val globalTag: String = "GTAG") : Timber.DebugTree() { private val moshi: Moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build() private val jsonPattern: Pattern = Pattern.compile("(\\{(?:[^{}]|(?:\\{(?:[^{}]|(?:\\{[^{}]*\\}))*\\}))*\\})") override fun log( priority: Int, tag: String?, message: String, t: Throwable?, ) { findLogCallStackTraceElement()?.let { element -> val lineNumberInfo = "(${element.fileName}:${element.lineNumber})" val formattedMessage = formatJsonIfNeeded(message) val updatedMessage = "$lineNumberInfo: $formattedMessage" super.log(priority, "$globalTag-$tag", updatedMessage, t) } ?: run { super.log(priority, "$globalTag-$tag", message, t) } } override fun createStackElementTag(element: StackTraceElement): String? { return element.fileName } private fun findLogCallStackTraceElement(): StackTraceElement? { val stackTrace = Throwable().stackTrace var foundDebugTree = false return stackTrace.firstOrNull { element -> if (element.className.contains("BetterTimberDebugTree")) { foundDebugTree = true false } else { foundDebugTree && !element.className.contains("Timber") } } } private fun formatJsonIfNeeded(message: String): String { val matcher = jsonPattern.matcher(message) val buffer = StringBuffer() while (matcher.find()) { try { val jsonAdapter: JsonAdapter<Any> = moshi.adapter(Any::class.java).indent(" ") val parsedObject = jsonAdapter.fromJson(matcher.group()) val formattedJson = jsonAdapter.toJson(parsedObject) matcher.appendReplacement(buffer, formattedJson) } catch (_: Exception) { } } matcher.appendTail(buffer) return buffer.toString() } } // MyApplication.kt Timber.plant(BetterTimberDebugTree("GTAG"))

4
1
12
2,275
Once the ski season is over, here is a good way to store and inventory the grid to protect the ski slopes ... the Cably UHF tag allows you to easily identify thegrid and its installation is very fast. #rfid #globaltag global-tag.com/portfolio/cab…
2
今日から開幕の「GLOBALTAG LEAGUE 2019」。 1位:海王(清宮海斗&拳王) 2位:AXIZ(潮﨑豪&中嶋勝彦) と予想。 #noah_ghc
2
PREVIEW FOR SUBVERSION'S UNLEASH PPV ON JUNE 11TH NOW AVAILABLE! #GMvsChampion #CrowvsGoat #GlobalTag and more!!!! w11.zetaboards.com/HKWOnline…
14
4
CATCH THE REPLAY OF SUNDAY'S SUBVERSION 25 ALL THE WAY FROM ALASKA HERE!!!! #GlobalTag #HallOFran #KolvsPerello w11.zetaboards.com/HKWOnline…

24
5
22 Aug 2016
Your tags can go global. #tags #globaltag #labels #productivity
2
#ICYMI Here is my #Day98 #GlobalTag for the #100DaysChallenge @DanOtick @yeddish @hanstrea & @KelvinRewind youtu.be/DOFLm_BgieY

4
4
Here is everything you need to know about #100DaysChallenge #GlobalTag indieintellect.com/3wy/

7
9
17 Sep 2012
#EmailStrategie lance son outil GlobalTag & Query bit.ly/QT3oIA #ecommerce #ecp2012 #globaltag