Napier هي مكتبة مسجلة لـ Kotlin Multiplatform.
وهو يدعم Android وDarwin (iOS وmacOS وwatchOS وtvOS) وJVM وJavaScript.
يتم عرض السجلات المكتوبة في الوحدة النمطية المشتركة على عارض المسجل لكل منصة.
التنسيق: [Class name]$[Method name]: [Your log]
يستخدم android.util.Log
(Logcat)
التنسيق: [Date time][Symbol][Log level][Class name].[Method name] - [Your log]
تمت إضافة تسمية [async]
في النهاية، إذا تم استدعاؤها من وظائف التعليق المرحلي.
يستخدم print
يستخدم console.log
يستخدم 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)
}
}
}
يمكنك تنزيل هذه المكتبة من مستودع MavenCentral أو jCenter.
يمكنك تنزيل هذا من 1.4.1
.
اسم الحزمة هو io.github.aakira
repositories {
mavenCentral()
}
يمكنك تنزيل هذا حتى 1.4.1
.
اسم الحزمة هو com.github.aakira
repositories {
jCenter()
}
قم بتعيين اسم الإصدار في build.gradle الخاص بك
def napierVersion = "[latest version]"
أضف التبعية إلى تبعياتك المشتركة
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 " }
يجب عليك تهيئة Napier في الوحدة النمطية الخاصة بك.
Napier .base( DebugAntilog ())
fun debugBuild () {
Napier .base( DebugAntilog ())
}
|وسيطة|نوع|وصف| |-|-| |coroutinesSuffix|Boolean|تمت إضافة تسمية [async]
في النهاية، إذا تم استدعاؤها من وظائف التعليق المرحلي|
NapierProxyKt . debugBuild ( )
Napier .takeLogarithm()
منصة | عينة |
---|---|
مطول | نابير.v() |
تصحيح | نابير.د() |
معلومات | نابير.i() |
تحذير | نابير.w() |
خطأ | نابير.e() |
تأكيد | نابير.وتف() |
يمكنك استخدام هذه المكتبة في سلسلة المحادثات الخلفية على نظام iOS باستخدام Kotlin.coroutines باعتباره موقعًا أصليًا.
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()
}
يمكنك حقن Antilog
مخصص.
لذلك، يجب عليك تغيير Antilogs في بناء التصحيح أو بناء الإصدار.
عينات Crashlytics AntiLog
تستخدم نماذج المشاريع Firebase Crashlytics.
يجب عليك تعيين ملفات المصادقة على android/google-services.json
و ios/Napier/GoogleService-Info.plist
.
تحقق من مستند Firebase. [أندرويد، آي أو إس]
اكتب هذا في صف التطبيق الخاص بك.
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 ))
}
اكتب هذا في 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.
هذه المكتبة مستوحاة من الأخشاب.
أوصي باستخدامه إذا كان يدعم مشروع kotlin متعدد المنصات.
شكرا على النصيحة.
@هوريتا-يويا، @terachanple