1diff --git a/cmd/server/main.go b/cmd/server/main.go
2index 8b1cc00b276dd02ccef3e57c08aa8655b05eb15e..54a7ba05d479b9184ccf4c363fb1e4f091d68a75 100644
3--- a/cmd/server/main.go
4+++ b/cmd/server/main.go
5@@ -109,17 +109,27 @@ } {
6 v.SetMyselfIn(extRouter)
7 }
8
9+ // processors
10+ var (
11+ fileScanner = worker.NewFileScanner(*root, mediaRepository)
12+ exifScanner = worker.NewEXIFScanner(mediaRepository)
13+ )
14+
15 // worker
16 var (
17 serverWorker = worker.NewServerWorker(&fasthttp.Server{Handler: r.Handler})
18- fileScanner = worker.NewFileScanner(*root, mediaRepository)
19- exifScanner = worker.NewEXIFScanner(mediaRepository)
20+ fileWorker = worker.NewWorkerFromChanProcessor[string](fileScanner, scheduler)
21+ exifWorker = worker.NewWorkerFromListProcessor[*media.Media](
22+ exifScanner,
23+ scheduler,
24+ logrus.WithField("context", "exif scanner"),
25+ )
26 )
27
28 pool := worker.NewWorkerPool()
29 pool.AddWorker("http server", serverWorker)
30- pool.AddWorker("exif scanner", worker.NewWorkerFromListProcessor[*media.Media](exifScanner, scheduler))
31- pool.AddWorker("file scanner", worker.NewWorkerFromChanProcessor[string](fileScanner, scheduler))
32+ pool.AddWorker("exif scanner", exifWorker)
33+ pool.AddWorker("file scanner", fileWorker)
34
35 ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
36 defer stop()
37diff --git a/pkg/worker/list_processor.go b/pkg/worker/list_processor.go
38index 8169e4e8b7cb5409083015fc21c9a9c7f6d354e7..c9c20a9d5b27b2f855df75ce8e98527973c51a96 100644
39--- a/pkg/worker/list_processor.go
40+++ b/pkg/worker/list_processor.go
41@@ -4,6 +4,8 @@ import (
42 "context"
43 "errors"
44 "sync"
45+
46+ "github.com/sirupsen/logrus"
47 )
48
49 type (
50@@ -26,6 +28,7 @@ }
51
52 listProcessorWorker[T any] struct {
53 listProcessor ListProcessor[T]
54+ logrus *logrus.Entry
55 scheduler *Scheduler
56 }
57 )
58@@ -33,10 +36,12 @@
59 func NewWorkerFromListProcessor[T any](
60 listProcessor ListProcessor[T],
61 scheduler *Scheduler,
62+ logrus *logrus.Entry,
63 ) Worker {
64 return &listProcessorWorker[T]{
65 listProcessor: listProcessor,
66 scheduler: scheduler,
67+ logrus: logrus,
68 }
69 }
70
71@@ -75,7 +80,7 @@ go func(v T) {
72 defer l.scheduler.Return()
73 defer wg.Done()
74 if err := l.listProcessor.Process(ctx, v); err != nil && !errors.Is(err, context.Canceled) {
75- println("Err", err.Error())
76+ l.logrus.WithError(err).Error("Error processing batch")
77 }
78 }(v)
79 }