feat: add logging enhancements by integrating pino and pino-pretty for improved error tracking and debugging across the application
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import { AlertCircle, RefreshCw } from "lucide-react";
|
||||
import { useTranslate } from "@/hooks/useTranslate";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import logger from "@/lib/logger";
|
||||
|
||||
interface ErrorMessageProps {
|
||||
errorCode: string;
|
||||
@@ -23,7 +24,7 @@ export const ErrorMessage = ({
|
||||
const message = t(`errors.${errorCode}`);
|
||||
|
||||
if (error) {
|
||||
console.error(error);
|
||||
logger.error(error);
|
||||
}
|
||||
|
||||
if (variant === "form") {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { useEffect, useState } from "react";
|
||||
import { Download, X } from "lucide-react";
|
||||
import logger from "@/lib/logger";
|
||||
|
||||
interface BeforeInstallPromptEvent extends Event {
|
||||
prompt: () => Promise<void>;
|
||||
@@ -83,7 +84,7 @@ export function InstallPWA() {
|
||||
setIsInstallable(false);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de l'installation:", error);
|
||||
logger.error({ err: error }, "Erreur lors de l'installation:");
|
||||
}
|
||||
|
||||
setDeferredPrompt(null);
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Download, Check, Loader2 } from "lucide-react";
|
||||
import { Button } from "./button";
|
||||
import { useToast } from "./use-toast";
|
||||
import type { KomgaBook } from "@/types/komga";
|
||||
import logger from "@/lib/logger";
|
||||
|
||||
interface BookOfflineButtonProps {
|
||||
book: KomgaBook;
|
||||
@@ -81,7 +82,7 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
|
||||
retryCount++;
|
||||
if (retryCount === maxRetries) {
|
||||
failedPages++;
|
||||
console.error(
|
||||
logger.error(
|
||||
`Échec du téléchargement de la page ${i} après ${maxRetries} tentatives`
|
||||
);
|
||||
}
|
||||
@@ -97,7 +98,7 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
|
||||
retryCount++;
|
||||
if (retryCount === maxRetries) {
|
||||
failedPages++;
|
||||
console.error(`Erreur lors du téléchargement de la page ${i}:`, error);
|
||||
logger.error({ err: error }, `Erreur lors du téléchargement de la page ${i}:`);
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
}
|
||||
@@ -143,7 +144,7 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erreur lors du téléchargement:", error);
|
||||
logger.error({ err: error }, "Erreur lors du téléchargement:");
|
||||
// Ne pas changer le statut si le téléchargement a été volontairement annulé
|
||||
if ((error as Error)?.message !== "Téléchargement annulé") {
|
||||
setBookStatus(book.id, { status: "error", progress: 0, timestamp: Date.now() });
|
||||
@@ -191,7 +192,7 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la vérification du cache:", error);
|
||||
logger.error({ err: error }, "Erreur lors de la vérification du cache:");
|
||||
setBookStatus(book.id, { status: "error", progress: 0, timestamp: Date.now() });
|
||||
}
|
||||
}, [book.id, book.media.pagesCount, setBookStatus]);
|
||||
@@ -255,7 +256,7 @@ export function BookOfflineButton({ book, className }: BookOfflineButtonProps) {
|
||||
await downloadBook();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la gestion du cache:", error);
|
||||
logger.error({ err: error }, "Erreur lors de la gestion du cache:");
|
||||
setBookStatus(book.id, { status: "error", progress: 0, timestamp: Date.now() });
|
||||
toast({
|
||||
title: "Erreur",
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useToast } from "./use-toast";
|
||||
import { ClientOfflineBookService } from "@/lib/services/client-offlinebook.service";
|
||||
import { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import logger from "@/lib/logger";
|
||||
|
||||
interface MarkAsReadButtonProps {
|
||||
bookId: string;
|
||||
@@ -49,7 +50,7 @@ export function MarkAsReadButton({
|
||||
});
|
||||
onSuccess?.();
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la mise à jour du progresseur de lecture:", error);
|
||||
logger.error({ err: error }, "Erreur lors de la mise à jour du progresseur de lecture:");
|
||||
toast({
|
||||
title: t("books.actions.markAsRead.error.title"),
|
||||
description: t("books.actions.markAsRead.error.description"),
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useToast } from "./use-toast";
|
||||
import { ClientOfflineBookService } from "@/lib/services/client-offlinebook.service";
|
||||
import { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import logger from "@/lib/logger";
|
||||
|
||||
interface MarkAsUnreadButtonProps {
|
||||
bookId: string;
|
||||
@@ -39,7 +40,7 @@ export function MarkAsUnreadButton({ bookId, onSuccess, className }: MarkAsUnrea
|
||||
});
|
||||
onSuccess?.();
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la mise à jour du progresseur de lecture:", error);
|
||||
logger.error({ err: error }, "Erreur lors de la mise à jour du progresseur de lecture:");
|
||||
toast({
|
||||
title: t("books.actions.markAsUnread.error.title"),
|
||||
description: t("books.actions.markAsUnread.error.description"),
|
||||
|
||||
Reference in New Issue
Block a user