Napier es una biblioteca de registradores para Kotlin Multiplatform.
Es compatible con Android, Darwin (iOS, macOS, watchOS, tvOS), JVM y JavaScript.
Los registros escritos en el módulo común se muestran en el visor de registradores de cada plataforma.
formato: [Class name]$[Method name]: [Your log]
utiliza android.util.Log
(Logcat)
formato: [Date time][Symbol][Log level][Class name].[Method name] - [Your log]
Se agregó la etiqueta [async]
al final, si se llama desde funciones de suspensión.
usa la print
utiliza el console.log
utiliza 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)
}
}
}
Puede descargar esta biblioteca desde el repositorio MavenCentral o jCenter.
Puedes descargarlo desde 1.4.1
.
El nombre del paquete es io.github.aakira
repositories {
mavenCentral()
}
Puedes descargarlo hasta 1.4.1
.
El nombre del paquete es com.github.aakira
repositories {
jCenter()
}
Establece el nombre de la versión en tu build.gradle
def napierVersion = "[latest version]"
Agregue la dependencia a sus dependencias principales comunes
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 " }
Debe inicializar Napier en su módulo.
Napier .base( DebugAntilog ())
fun debugBuild () {
Napier .base( DebugAntilog ())
}
|argumento|tipo|descripción| |-|-| |coroutinesSuffix|Boolean|Se agregó la etiqueta [async]
al final, si se llama desde funciones de suspensión|
NapierProxyKt . debugBuild ( )
Napier .takeLogarithm()
Plataforma | Muestra |
---|---|
VERBOSO | Napier.v() |
DEPURAR | Napier.d() |
INFORMACIÓN | Napier.i() |
ADVERTENCIA | Napier.w() |
ERROR | Napier.e() |
AFIRMAR | Napier.wtf() |
Puede usar esta biblioteca en el hilo de fondo en iOS usando Kotlin.coroutines como nativo-mt.
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()
}
Puede inyectar Antilog
personalizado.
Por lo tanto, debe cambiar Antilogs en la versión de depuración o en la versión de lanzamiento.
Ejemplos de Crashlytics AntiLog
Los proyectos de muestra utilizan Firebase Crashlytics.
Debe configurar los archivos de autenticación en android/google-services.json
y ios/Napier/GoogleService-Info.plist
.
Consulte el documento de Firebase. [Android, iOS]
Escriba esto en su clase de aplicación.
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 ))
}
Escribe esto en tu 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.
Esta biblioteca está inspirada en Timber.
Recomiendo usarlo si es compatible con el proyecto multiplataforma Kotlin.
Gracias por el consejo.
@horita-yuya, @terachanple