Improve logging
This commit is contained in:
parent
5e13df9bd8
commit
863e349711
@ -6,6 +6,7 @@ import android.content.Intent
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import com.github.salomonbrys.kotson.fromJson
|
import com.github.salomonbrys.kotson.fromJson
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonParser
|
import com.google.gson.JsonParser
|
||||||
@ -249,7 +250,10 @@ class BackupRestoreService : Service() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
.doOnError { error ->
|
.doOnError { error ->
|
||||||
Timber.e(error)
|
// [EXH]
|
||||||
|
XLog.w("> Failed to perform restore!", error)
|
||||||
|
XLog.w("> (uri: %s)", uri)
|
||||||
|
|
||||||
writeErrorLog()
|
writeErrorLog()
|
||||||
val errorIntent = Intent(BackupConst.INTENT_FILTER).apply {
|
val errorIntent = Intent(BackupConst.INTENT_FILTER).apply {
|
||||||
putExtra(BackupConst.ACTION, BackupConst.ACTION_ERROR_RESTORE_DIALOG)
|
putExtra(BackupConst.ACTION, BackupConst.ACTION_ERROR_RESTORE_DIALOG)
|
||||||
@ -322,6 +326,14 @@ class BackupRestoreService : Service() {
|
|||||||
tracks: List<Track>): Observable<Manga> {
|
tracks: List<Track>): Observable<Manga> {
|
||||||
return backupManager.restoreMangaFetchObservable(source, manga)
|
return backupManager.restoreMangaFetchObservable(source, manga)
|
||||||
.onErrorReturn {
|
.onErrorReturn {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to restore manga!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
manga.id,
|
||||||
|
manga.url)
|
||||||
|
|
||||||
errors.add(Date() to "${manga.title} - ${it.message}")
|
errors.add(Date() to "${manga.title} - ${it.message}")
|
||||||
manga
|
manga
|
||||||
}
|
}
|
||||||
@ -394,6 +406,15 @@ class BackupRestoreService : Service() {
|
|||||||
return backupManager.restoreChapterFetchObservable(source, manga, chapters)
|
return backupManager.restoreChapterFetchObservable(source, manga, chapters)
|
||||||
// If there's any error, return empty update and continue.
|
// If there's any error, return empty update and continue.
|
||||||
.onErrorReturn {
|
.onErrorReturn {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to restore chapter!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s, chapters.size: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
manga.id,
|
||||||
|
manga.url,
|
||||||
|
chapters.size)
|
||||||
|
|
||||||
errors.add(Date() to "${manga.title} - ${it.message}")
|
errors.add(Date() to "${manga.title} - ${it.message}")
|
||||||
Pair(emptyList(), emptyList())
|
Pair(emptyList(), emptyList())
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.download
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import com.jakewharton.rxrelay.BehaviorRelay
|
import com.jakewharton.rxrelay.BehaviorRelay
|
||||||
import com.jakewharton.rxrelay.PublishRelay
|
import com.jakewharton.rxrelay.PublishRelay
|
||||||
@ -284,6 +285,16 @@ class Downloader(
|
|||||||
.doOnNext { ensureSuccessfulDownload(download, mangaDir, tmpDir, chapterDirname) }
|
.doOnNext { ensureSuccessfulDownload(download, mangaDir, tmpDir, chapterDirname) }
|
||||||
// If the page list threw, it will resume here
|
// If the page list threw, it will resume here
|
||||||
.onErrorReturn { error ->
|
.onErrorReturn { error ->
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Download error!", error)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s, chapter.id: %s, chapter.url: %s)",
|
||||||
|
download.source.id,
|
||||||
|
download.source.name,
|
||||||
|
download.manga.id,
|
||||||
|
download.manga.url,
|
||||||
|
download.chapter.id,
|
||||||
|
download.chapter.url)
|
||||||
|
|
||||||
download.status = Download.ERROR
|
download.status = Download.ERROR
|
||||||
notifier.onError(error.message, download.chapter.name)
|
notifier.onError(error.message, download.chapter.name)
|
||||||
download
|
download
|
||||||
@ -355,6 +366,15 @@ class Downloader(
|
|||||||
val extension = getImageExtension(response, file)
|
val extension = getImageExtension(response, file)
|
||||||
file.renameTo("$filename.$extension")
|
file.renameTo("$filename.$extension")
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch image!", e)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, page.index: %s, page.url: %s, page.imageUrl: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
page.index,
|
||||||
|
page.url,
|
||||||
|
page.imageUrl)
|
||||||
|
|
||||||
response.close()
|
response.close()
|
||||||
file.delete()
|
file.delete()
|
||||||
throw e
|
throw e
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.tachiyomi.source.online
|
package eu.kanade.tachiyomi.source.online
|
||||||
|
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
|
||||||
@ -7,7 +8,18 @@ fun HttpSource.getImageUrl(page: Page): Observable<Page> {
|
|||||||
page.status = Page.LOAD_PAGE
|
page.status = Page.LOAD_PAGE
|
||||||
return fetchImageUrl(page)
|
return fetchImageUrl(page)
|
||||||
.doOnError { page.status = Page.ERROR }
|
.doOnError { page.status = Page.ERROR }
|
||||||
.onErrorReturn { null }
|
.onErrorReturn {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch image URL!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, page.index: %s, page.url: %s, page.imageUrl: %s)",
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
page.index,
|
||||||
|
page.url,
|
||||||
|
page.imageUrl)
|
||||||
|
|
||||||
|
null
|
||||||
|
}
|
||||||
.doOnNext { page.imageUrl = it }
|
.doOnNext { page.imageUrl = it }
|
||||||
.map { page }
|
.map { page }
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import android.support.v4.widget.DrawerLayout
|
|||||||
import android.support.v7.widget.*
|
import android.support.v7.widget.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import com.f2prateek.rx.preferences.Preference
|
import com.f2prateek.rx.preferences.Preference
|
||||||
import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents
|
import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
@ -401,7 +402,11 @@ open class BrowseCatalogueController(bundle: Bundle) :
|
|||||||
* @param error the error received.
|
* @param error the error received.
|
||||||
*/
|
*/
|
||||||
fun onAddPageError(error: Throwable) {
|
fun onAddPageError(error: Throwable) {
|
||||||
Timber.e(error)
|
XLog.w("> Failed to load next catalogue page!", error)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s)",
|
||||||
|
presenter.source.id,
|
||||||
|
presenter.source.name)
|
||||||
|
|
||||||
val adapter = adapter ?: return
|
val adapter = adapter ?: return
|
||||||
adapter.onLoadMoreComplete(null)
|
adapter.onLoadMoreComplete(null)
|
||||||
hideProgressBar()
|
hideProgressBar()
|
||||||
|
@ -11,6 +11,7 @@ import android.support.v7.view.ActionMode
|
|||||||
import android.support.v7.widget.DividerItemDecoration
|
import android.support.v7.widget.DividerItemDecoration
|
||||||
import android.support.v7.widget.LinearLayoutManager
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
import android.view.*
|
import android.view.*
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import com.jakewharton.rxbinding.support.v4.widget.refreshes
|
import com.jakewharton.rxbinding.support.v4.widget.refreshes
|
||||||
import com.jakewharton.rxbinding.view.clicks
|
import com.jakewharton.rxbinding.view.clicks
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
@ -223,6 +224,13 @@ class ChaptersController : NucleusController<ChaptersPresenter>(),
|
|||||||
fun onFetchChaptersError(error: Throwable) {
|
fun onFetchChaptersError(error: Throwable) {
|
||||||
swipe_refresh?.isRefreshing = false
|
swipe_refresh?.isRefreshing = false
|
||||||
activity?.toast(error.message)
|
activity?.toast(error.message)
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch chapters!", error)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s)",
|
||||||
|
presenter.source.id,
|
||||||
|
presenter.source.name,
|
||||||
|
presenter.manga.id,
|
||||||
|
presenter.manga.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onChapterStatusChange(download: Download) {
|
fun onChapterStatusChange(download: Download) {
|
||||||
|
@ -22,6 +22,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy
|
|||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import com.bumptech.glide.request.target.SimpleTarget
|
import com.bumptech.glide.request.target.SimpleTarget
|
||||||
import com.bumptech.glide.request.transition.Transition
|
import com.bumptech.glide.request.transition.Transition
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import com.jakewharton.rxbinding.support.v4.widget.refreshes
|
import com.jakewharton.rxbinding.support.v4.widget.refreshes
|
||||||
import com.jakewharton.rxbinding.view.clicks
|
import com.jakewharton.rxbinding.view.clicks
|
||||||
import com.jakewharton.rxbinding.view.longClicks
|
import com.jakewharton.rxbinding.view.longClicks
|
||||||
@ -402,9 +403,14 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
|
|||||||
fun onFetchMangaError(error: Throwable) {
|
fun onFetchMangaError(error: Throwable) {
|
||||||
setRefreshing(false)
|
setRefreshing(false)
|
||||||
activity?.toast(error.message)
|
activity?.toast(error.message)
|
||||||
// EXH -->
|
|
||||||
Timber.e(error, "Failed to fetch manga details!")
|
// [EXH]
|
||||||
// EXH <--
|
XLog.w("> Failed to fetch manga details!", error)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s)",
|
||||||
|
presenter.source.id,
|
||||||
|
presenter.source.name,
|
||||||
|
presenter.manga.id,
|
||||||
|
presenter.manga.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.tachiyomi.ui.reader.loader
|
package eu.kanade.tachiyomi.ui.reader.loader
|
||||||
|
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||||
@ -62,7 +63,19 @@ class ChapterLoader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.toCompletable()
|
.toCompletable()
|
||||||
.doOnError { chapter.state = ReaderChapter.State.Error(it) }
|
.doOnError {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch page list!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, manga.id: %s, manga.url: %s, chapter.id: %s, chapter.url: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
manga.id,
|
||||||
|
manga.url,
|
||||||
|
chapter.chapter.id,
|
||||||
|
chapter.chapter.url)
|
||||||
|
|
||||||
|
chapter.state = ReaderChapter.State.Error(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.tachiyomi.ui.reader.loader
|
package eu.kanade.tachiyomi.ui.reader.loader
|
||||||
|
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||||
@ -203,7 +204,20 @@ class HttpPageLoader(
|
|||||||
page.status = Page.LOAD_PAGE
|
page.status = Page.LOAD_PAGE
|
||||||
return fetchImageUrl(page)
|
return fetchImageUrl(page)
|
||||||
.doOnError { page.status = Page.ERROR }
|
.doOnError { page.status = Page.ERROR }
|
||||||
.onErrorReturn { null }
|
.onErrorReturn {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch image URL!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, page.index: %s, page.url: %s, page.imageUrl: %s, chapter.id: %s, chapter.url: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
page.index,
|
||||||
|
page.url,
|
||||||
|
page.imageUrl,
|
||||||
|
page.chapter.chapter.id,
|
||||||
|
page.chapter.chapter.url)
|
||||||
|
|
||||||
|
null
|
||||||
|
}
|
||||||
.doOnNext { page.imageUrl = it }
|
.doOnNext { page.imageUrl = it }
|
||||||
.map { page }
|
.map { page }
|
||||||
}
|
}
|
||||||
@ -229,7 +243,20 @@ class HttpPageLoader(
|
|||||||
page.stream = { chapterCache.getImageFile(imageUrl).inputStream() }
|
page.stream = { chapterCache.getImageFile(imageUrl).inputStream() }
|
||||||
page.status = Page.READY
|
page.status = Page.READY
|
||||||
}
|
}
|
||||||
.doOnError { page.status = Page.ERROR }
|
.doOnError {
|
||||||
|
// [EXH]
|
||||||
|
XLog.w("> Failed to fetch image!", it)
|
||||||
|
XLog.w("> (source.id: %s, source.name: %s, page.index: %s, page.url: %s, page.imageUrl: %s, chapter.id: %s, chapter.url: %s)",
|
||||||
|
source.id,
|
||||||
|
source.name,
|
||||||
|
page.index,
|
||||||
|
page.url,
|
||||||
|
page.imageUrl,
|
||||||
|
page.chapter.chapter.id,
|
||||||
|
page.chapter.chapter.url)
|
||||||
|
|
||||||
|
page.status = Page.ERROR
|
||||||
|
}
|
||||||
.onErrorReturn { page }
|
.onErrorReturn { page }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user