Sto scrivendo un'applicazione a riga di comando in Java. L'app eseguirà la scansione di un elenco di risorse remote, eseguirà vari tentativi per accedere a tali risorse, segnalerà i tentativi falliti e, se accidentalmente, eseguirà alcune azioni di manutenzione o diagnosi e riferirà i risultati di tale azione.
Come puoi immaginare, c'è un sacco di gestione degli errori e segnalazione degli errori. Ma segnalare gli errori è una caratteristica. Lasciatemi spiegare: un rapporto con gli errori incontrati quando si tenta di accedere alla risorsa remota è qualcosa che l'utente si aspetta dall'app, poiché questi errori sono utili per la diagnosi. Tali errori di accesso sono previsti in molti casi e le cause dovrebbero essere segnalate.
Come puoi vedere, c'è una linea sfocata tra ciò che è un errore e quale è l'output previsto dell'app, che come ogni app avrà anche i suoi errori.
Uso l'API di registrazione Java e sto progettando le mie classi in modo da poter aggiungere diversi logger e logger e / o gestori di swap (da schermo, a file, a database, ecc.) così come un diverso elenco di risorse da esaminare (e diversi tipi di tali risorse).
Il problema è che sono tentato di chiamare logger.log()
ovunque in precedenza utilizzando System.put.println();
In questo momento sono ora in una posizione in cui c'è una linea blua tra ciò che dovrebbe essere stampato con System.out.println()
e ciò che deve essere inviato all'istanza Logger
.
Credo di avere una confusione concettuale.
Quindi le domande sono, dato che la segnalazione degli errori fa parte delle funzionalità principali dell'app e che, come ogni app, deve gestire e registrare i propri errori:
- Quali elementi devono essere stampati con
System.out.println()
- Quali elementi devono essere inoltrati a un
Logger
- Quali elementi devono essere entrambi stampati con
System.out.println()
e inoltrati aLogger
- I normali output dovrebbero essere considerati come messaggi di log di basso livello di gravità o non del tutto?
EDIT:
Just to clarify, the app could attempt to download a file, but it's not the file what the final user wants, but to see whether or not it was accessible and if not, why. The resource could be a server, a database, a service or a file. The user doesn't want the app to get what the resource offers but to check availability and report the cause. That somehow makes failed attempts code errors the output users want to get from this app. Hence the thin line between logging or printing.