better logging of time spent in tasks

This commit is contained in:
Gauthier Roebroeck 2019-08-20 17:32:21 +08:00
parent 656b89dba4
commit 1c298221f8
5 changed files with 24 additions and 14 deletions

View file

@ -56,6 +56,8 @@ dependencies {
implementation("commons-io:commons-io:2.6")
implementation("org.apache.commons:commons-lang3:3.9")
implementation("org.apache.tika:tika-core:1.22")
implementation("com.github.junrar:junrar:4.0.0")
implementation("net.grey-panther:natural-comparator:1.1")

View file

@ -1,11 +1,14 @@
package org.gotson.komga.domain.service
import mu.KotlinLogging
import org.apache.commons.lang3.time.DurationFormatUtils
import org.gotson.komga.domain.model.Book
import org.gotson.komga.domain.model.BookMetadata
import org.gotson.komga.domain.model.Status
import org.gotson.komga.domain.persistence.BookRepository
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import kotlin.system.measureTimeMillis
private val logger = KotlinLogging.logger {}
@ -15,18 +18,21 @@ class BookManager(
private val bookParser: BookParser
) {
@Transactional
fun parseAndPersist(book: Book) {
logger.info { "Parse and persist book: ${book.url}" }
try {
book.metadata = bookParser.parse(book)
} catch (ex: UnsupportedMediaTypeException) {
logger.info(ex) { "Unsupported media type: ${ex.mediaType}" }
book.metadata = BookMetadata(status = Status.UNSUPPORTED, mediaType = ex.mediaType)
} catch (ex: Exception) {
logger.error(ex) { "Error while parsing" }
book.metadata = BookMetadata(status = Status.ERROR)
}
bookRepository.save(book)
measureTimeMillis {
try {
book.metadata = bookParser.parse(book)
} catch (ex: UnsupportedMediaTypeException) {
logger.info(ex) { "Unsupported media type: ${ex.mediaType}" }
book.metadata = BookMetadata(status = Status.UNSUPPORTED, mediaType = ex.mediaType)
} catch (ex: Exception) {
logger.error(ex) { "Error while parsing" }
book.metadata = BookMetadata(status = Status.ERROR)
}
bookRepository.save(book)
}.also { logger.info { "Parsing finished in ${DurationFormatUtils.formatDurationHMS(it)}" } }
}
}

View file

@ -40,6 +40,7 @@ class BookParser(
val pages = supportedMediaTypes.getValue(mediaType).getPagesList(book.path())
logger.info { "Book has ${pages.size} pages" }
logger.info { "Trying to generate cover for book: ${book.url}" }
val thumbnail = try {
ByteArrayOutputStream().use {
supportedMediaTypes.getValue(mediaType).getPageStream(book.path(), pages.first().fileName).let { cover ->

View file

@ -3,6 +3,7 @@ package org.gotson.komga.domain.service
import mu.KotlinLogging
import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator
import org.apache.commons.io.FilenameUtils
import org.apache.commons.lang3.time.DurationFormatUtils
import org.gotson.komga.domain.model.Book
import org.gotson.komga.domain.model.Serie
import org.springframework.stereotype.Service
@ -60,7 +61,7 @@ class FileSystemScanner {
}.toList()
}.also {
val countOfBooks = scannedSeries.sumBy { it.books.size }
logger.info { "Scanned ${scannedSeries.size} series and $countOfBooks books in $it ms" }
logger.info { "Scanned ${scannedSeries.size} series and $countOfBooks books in ${DurationFormatUtils.formatDurationHMS(it)}" }
}
return scannedSeries

View file

@ -1,6 +1,7 @@
package org.gotson.komga.domain.service
import mu.KotlinLogging
import org.apache.commons.lang3.time.DurationFormatUtils
import org.gotson.komga.domain.model.Library
import org.gotson.komga.domain.model.Status
import org.gotson.komga.domain.persistence.BookRepository
@ -75,15 +76,14 @@ class LibraryManager(
}
}
}
}.also { logger.info { "Library update finished in $it ms" } }
}.also { logger.info { "Library update finished in ${DurationFormatUtils.formatDurationHMS(it)}" } }
}
@Transactional
fun parseUnparsedBooks() {
logger.info { "Parsing all books in status: unkown" }
val booksToParse = bookRepository.findAllByMetadataStatus(Status.UNKNOWN)
measureTimeMillis {
booksToParse.forEach { bookManager.parseAndPersist(it) }
}.also { logger.info { "Parsed ${booksToParse.size} books in $it ms" } }
}.also { logger.info { "Parsed ${booksToParse.size} books in ${DurationFormatUtils.formatDurationHMS(it)}" } }
}
}