Napier ist eine Logger-Bibliothek für Kotlin Multiplatform.
Es unterstützt Android, Darwin (iOS, macOS, watchOS, tvOS), JVM, JavaScript.
Im gemeinsamen Modul geschriebene Protokolle werden im Logger-Viewer jeder Plattform angezeigt.
Format: [Class name]$[Method name]: [Your log]
verwendet das android.util.Log
(Logcat)
Format: [Date time][Symbol][Log level][Class name].[Method name] - [Your log]
Am Ende wurde die Bezeichnung [async]
hinzugefügt, wenn sie von Suspend-Funktionen aufgerufen wird.
nutzt den print
verwendet das console.log
verwendet den java.util.logging.Logger
class Sample {
fun hello (): String {
Napier .v( " Hello napier " )
Napier .d( " optional tag " , tag = " your tag " )
return " Hello Napier "
}
suspend fun suspendHello (): String {
Napier .i( " Hello " )
delay( 3000L )
Napier .w( " Napier! " )
return " Suspend Hello Napier "
}
fun handleError () {
try {
throw Exception ( " throw error " )
} catch (e : Exception ) {
Napier .e( " Napier Error " , e)
}
}
}
Sie können diese Bibliothek aus dem MavenCentral- oder jCenter-Repository herunterladen.
Sie können dies ab 1.4.1
herunterladen.
Der Paketname lautet io.github.aakira
repositories {
mavenCentral()
}
Sie können dies bis 1.4.1
herunterladen.
Der Paketname lautet com.github.aakira
repositories {
jCenter()
}
Legen Sie den Versionsnamen in Ihrem build.gradle fest
def napierVersion = "[latest version]"
Fügen Sie die Abhängigkeit zu Ihren commonMain-Abhängigkeiten hinzu
sourceSets {
commonMain {
dependencies {
// ...
implementation " io.github.aakira:napier: $n apierVersion "
}
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation( " io.github.aakira:napier: $napierVersion " )
}
}
}
// verbose log
Napier .v( " Hello napier " )
Napier .v { " Hello napier " }
// you can set a tag for each log
Napier .d( " optional tag " , tag = " your tag " )
Napier .d(tag = " your tag " ) { " optional tag " }
try {
.. .
} catch (e : Exception ) {
// you can set the throwable
Napier .e( " Napier Error " , e)
Napier .e(e) { " Napier Error " }
}
// you can also use top-level function
log { " top-level " }
log(tag = " your tag " ) { " top-level " }
Sie müssen den Napier in Ihrem Modul initialisieren.
Napier .base( DebugAntilog ())
fun debugBuild () {
Napier .base( DebugAntilog ())
}
|Argument|Typ|Beschreibung| |-|-| |coroutinesSuffix|Boolean|Label [async]
am Ende hinzugefügt, wenn es aus Suspend-Funktionen aufgerufen wird|
NapierProxyKt . debugBuild ( )
Napier .takeLogarithm()
Plattform | Probe |
---|---|
Ausführlich | Napier.v() |
DEBUGGEN | Napier.d() |
INFO | Napier.i() |
WARNUNG | Napier.w() |
FEHLER | Napier.e() |
BEHAUPTEN | Napier.wtf() |
Sie können diese Bibliothek im Hintergrundthread unter iOS verwenden, indem Sie Kotlin.coroutines als native-mt verwenden.
internal val mainScope = SharedScope ( Dispatchers . Main )
internal val backgroundScope = SharedScope ( Dispatchers . Default )
internal class SharedScope ( private val context : CoroutineContext ) : CoroutineScope {
private val job = Job ()
private val exceptionHandler = CoroutineExceptionHandler { _, throwable ->
println ( " [Coroutine Exception] $throwable " )
}
override val coroutineContext : CoroutineContext
get() = context + job + exceptionHandler
}
backgroundScope.launch {
suspendFunction()
}
Sie können benutzerdefiniertes Antilog
einfügen.
Daher sollten Sie Antilogs im Debug-Build oder Release-Build ändern.
Crashlytics AntiLog-Beispiele
Beispielprojekte verwenden Firebase Crashlytics.
Sie müssen die Authentifizierungsdateien auf android/google-services.json
und ios/Napier/GoogleService-Info.plist
festlegen.
Überprüfen Sie das Firebase-Dokument. [Android, iOS]
Schreiben Sie dies in Ihre Anwendungsklasse.
if ( BuildConfig . DEBUG ) {
// Debug build
// disable firebase crashlytics
FirebaseCrashlytics .getInstance().setCrashlyticsCollectionEnabled( false )
// init napier
Napier .base( DebugAntilog ())
} else {
// Others(Release build)
// enable firebase crashlytics
FirebaseCrashlytics .getInstance().setCrashlyticsCollectionEnabled( true )
// init napier
Napier .base( CrashlyticsAntilog ( this ))
}
Schreiben Sie dies in Ihr AppDelegate.
#if DEBUG
// Debug build
// init napier
NapierProxyKt . debugBuild ( )
#else
// Others(Release build)
// init firebase crashlytics
FirebaseApp . configure ( )
// init napier
NapierProxyKt . releaseBuild ( antilog : CrashlyticsAntilog (
crashlyticsAddLog : { priority , tag , message in
Crashlytics . crashlytics ( ) . log ( " ( String ( describing : tag ) ) : ( String ( describing : message ) ) " )
} ,
crashlyticsSendLog : { throwable in
Crashlytics . crashlytics ( ) . record ( error : throwable )
} ) )
#endif
Copyright (C) 2019 A.Akira
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
https://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.
Diese Bibliothek ist von Timber inspiriert.
Ich empfehle die Verwendung, wenn es das Kotlin-Multiplattform-Projekt unterstützt.
Danke für den Rat.
@horita-yuya, @terachanple