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