Abbiamo alcuni processi a lunga esecuzione che possono essere eseguiti fino a un'ora e fino a 6 ore.
Alcuni processi vengono avviati manualmente e l'utente vuole vedere qual è lo stato di avanzamento del processo.
Senza entrare in molti dettagli dei dettagli reali, potresti pensare a:
- Recupero dei dati
- Aggiorna le informazioni del cliente
- rimuovi i dati falsi
- crea file esterni
- crea pdf
Ovviamente questo processo consiste in un sacco di classi diverse, e talvolta voglio che quelle singole classi scrivano progressi.
Ad esempio: quando mi interessano solo i progressi generali, potrei scrivere i progressi dalla facciata di livello superiore, ma voglio anche scrivere progressi nel servizio che crea i pdf, in modo che anche la classe e le sottoclassi abbiano scrivere progressi.
La mia domanda è: come posso scrivere i progressi di tutte quelle classi riguardo lo stesso processo di 'base' senza passare qualche tipo di processo da una classe all'altra?
Ciò che ho pensato è la creazione di una classe di servizio di logging che si occupi della registrazione e del passaggio da una classe all'altra, ma sembra così brutto dare a ogni singola classe il servizio di registrazione.
In secondo luogo, ho pensato di creare una classe di logging statica per il logging (che trovo comune nelle applicazioni per la normale registrazione degli errori) ma devo ancora passare il processId intorno
In terzo luogo ho pensato di creare una factory da chiamare da ogni classe, ma poi devo ancora passare il processId intorno
Quarto ho pensato di iniettare la classe loggingservice in ogni classe, ma poi devo ancora passare il processId in giro e sembra un tipo sbagliato di dipendenza per una classe, una dipendenza per un logger.
Quindi sto cercando il numero 5, o i motivi per cui 1,2,3 o 4 sono comunque una buona idea e gli svantaggi che vedo non sono rilevanti o importanti.