Die Holzbibliothek von Jake Wharton ist großartig. Es ist eine Java -Bibliothek mit einer API, die für Java gut funktioniert, aber das ist nicht so idiomatisch, wenn es in Kotlin verwendet wird.
Diese Bibliothek baut auf Holz mit einer API auf, die von Kotlin einfacher zu verwenden ist. Anstatt Formatierungsparameter zu verwenden, übergeben Sie eine Lambda, die nur bewertet wird, wenn die Nachricht protokolliert ist.
Tree
in onCreate
Ihrer Anwendung, genauso wie mit einfachem Holz. // Standard timber
Timber .d( " %d %s " , intVar + 3 , stringFun())
// Kotlin extensions
Timber .d { " ${intVar + 3 } ${stringFun()} " }
// or
d { " ${intVar + 3 } ${stringFun()} " }
Die gleiche Nachricht und Tags werden in allen drei Fällen protokolliert.
Die Kotlin -Erweiterungen haben den Vorteil, bequemer zu schreiben, und sind unter bestimmten Umständen auch leistungsfähiger. Der übergebene Block wird nur bewertet, wenn die Nachricht protokolliert ist, und selbst wenn die Nachricht an mehreren Bäumen protokolliert ist, wird der Block nur einmal ausgewertet. Alle Erweiterungsmethoden sind eingeführt, sodass für die Verwendung dieser Bibliothek keine Methodenbewertung für die Methode enthält.
Die Protokollierung von Ausnahmeobjekten funktioniert auf die gleiche Weise:
// Standard timber
Timber .e(exception, " %d exceptions " , errorCount)
// Kotlin extensions
Timber .e(exception) { " $errorCount exceptions " }
// or
e(exception) { " $errorCount exceptions " }
Holz verfügt über ein halbes Dutzend Lint -Checks, mit denen Sie die falsche Verwendung der Protokollanrufe erkennen können.
Mit Ausnahme von langen benutzerdefinierten Tags ist keiner der Fehler, nach denen diese Überprüfungen suchen, mit dieser Bibliothek möglich. Sie können einen beliebigen Code innerhalb der Lambdas ausführen, die an die Protokollerweiterungen übergeben wurden, und es besteht kein Risiko für Leistungsprobleme in Ihrem Release -Code, da die Blöcke nicht bewertet werden, es sei denn, die Nachrichten werden gedruckt.
Die Kotlin -Erweiterungen für Holz werden mit Maven Central, JCenter und Jitpack verteilt.
implementation ' com.github.ajalt:timberkt:1.5.1 '
Die Dokumentation wird hier online gehostet.
Copyright 2017-2018 AJ Alt
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.