Napier は、Kotlin マルチプラットフォーム用のロガー ライブラリです。
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]"
commonMain 依存関係に依存関係を追加します。
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() |
デバッグ | ネイピア.d() |
情報 | ネイピア.i() |
警告 | ネイピア.w() |
エラー | ネイピア.e() |
アサート | ネイピア.wtf() |
Kotlin.coroutines をネイティブ mt として使用して、iOS のバックグラウンド スレッドでこのライブラリを使用できます。
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のドキュメントを確認してください。 【アンドロイド、iOS】
これをアプリケーションクラスに記述します。
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 マルチプラットフォーム プロジェクトをサポートしている場合は、それを使用することをお勧めします。
アドバイスありがとうございます。
@horita-yuya、@terachanple