Sto scrivendo una libreria che raccoglie varie funzioni che utilizzerò in diverse applicazioni. Voglio che generi istruzioni di registro visibili per l'utente della libreria, ad esempio, se sto creando un'applicazione e sto utilizzando la libreria, voglio che la libreria generi istruzioni di registro visibili a me. Come lo faccio? Dal momento che il file di registro sarà configurato dallo sviluppatore dell'applicazione, in che modo la mia biblioteca saprà come effettuare il log?Logger per libreria Java
risposta
se si sta sviluppando un libreria gli altri includeranno nella loro applicazione è necessario utilizzare un accedendo facciata. Altrimenti imponi agli utenti della tua biblioteca di configurare e includere il framework di registrazione che hai scelto in aggiunta al framework che hanno scelto per la loro applicazione.
Per esempio, se si utilizza log4j ma lo sviluppatore utilizzando la libreria utilizza logback dovrà includere un file di configurazione log4j e il vaso log4j (o prendere other measures) per fare la vostra libreria felice.
Facciate registrazione risolvono questo problema (da Apache Commons Logging):
Quando si scrive una libreria è molto utile per registrare le informazioni. Tuttavia ci sono molte implementazioni di logging là fuori, e una libreria non può imporre l'uso di una particolare sull'applicazione complessiva di cui la libreria fa parte.
Il pacchetto di registrazione è un ponte ultrasottile tra diverse implementazioni di registrazione. Una libreria che utilizza l'API di registrazione delle commons può essere utilizzata con qualsiasi implementazione di registrazione in fase di esecuzione. Il logging dei comuni viene fornito con il supporto per una serie di popolari implementazioni di registrazione e la scrittura di adattatori per gli altri è un compito ragionevolmente semplice.
O il ragionamento da SLF4J:
La facciata registrazione semplice per Java o (SLF4J) funge da semplice facciata o di astrazione per vari quadri di registrazione, ad esempio, java.util.logging, log4j e logback, che consentono all'utente finale di collegare il framework di registrazione desiderato al momento di distribuzione .
I candidati per le facciate di registrazione sono:
Il tuo esempio è fuorviante. Lo sviluppatore può utilizzare l'API SLF4J per il codice e l'adattatore log4j per terze parti allo stesso tempo. Quindi sceglie solo un backend SLF4J come il logback. In realtà questo è un motivo per SLF4J, è così semplice. Non è necessaria alcuna configurazione di log4j. –
@RostislavMatl Stai parlando dei "moduli di bridging" di SLF4J (http://www.slf4j.org/legacy.html)? Questi ti permettono di usare una libreria che usa log4j, ... internamente e reindirizzare i suoi messaggi di log a SLF4J (che potrebbe essere supportato da logback). Questa è certamente una grande caratteristica se sei l'UTENTE di una biblioteca. Tuttavia, quando sei lo SVILUPPATORE di una biblioteca, perché dovresti costringere i tuoi utenti a saltare attraverso questi cerchi? Perché non usare una facciata direttamente? Poiché la pagina SLF4J afferma che queste soluzioni sono "appropriate per software fuori dal tuo controllo". Per favore correggimi se ti ho frainteso. – Joe23
Apparentemente parliamo di cose diverse. Hai scritto: "se usi log4j ma lo sviluppatore che usa la tua libreria utilizza la registrazione, dovrà includere una configurazione di log4j" - non è vero. Ed è una cattiva soluzione allo stesso tempo. Non ho detto che non è possibile utilizzare SLF4J mentre si sviluppa un nuovo codice. Ho scelto il punto o la vista dell'utente della libreria perché sarai più spesso l'utente che il creatore. –
Le soluzioni standard per questo sono:
- Log4J: http://logging.apache.org/log4j/
- SLF4J: http://www.slf4j.org/
- JDK incorporato Logger: https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html
Tutti loro vi permetterà di configurare la posizione del file di registro attraverso la configurazione.
- 1. Libreria di logger per iOS
- 2. logger crittografata per Java
- 3. logger jPOS: per aggiungere logger nel packager
- 4. logger separato per ogni istanza di una libreria
- 5. Libreria BSON per java?
- 6. Libreria UPnP per Java
- 7. Libreria matematica per Java
- 8. Libreria Beep per Java?
- 9. Libreria WebP per java?
- 10. Best Logger per cacao
- 11. Java Logger solo per file, nessuna uscita schermo
- 12. Configurazione di java logger per un pacchetto specifico
- 13. Come stampare jaxb sull'oggetto java nel logger
- 14. Libreria Java SSH per Android?
- 15. libreria readline-like per Java
- 16. Libreria di geometria per Java
- 17. Libreria di valute per Java
- 18. Libreria per OAuth Provider (Java)
- 19. Un logger per una soluzione multi-progetto
- 20. Configurazione dei logger per bambini
- 21. Redirect stderr per esempio Logger
- 22. Nome logger Winston
- 23. Numero di logger utilizzati
- 24. Libreria Java per generare dati PDT TomTom
- 25. Libreria Java per interrogare raccolte/oggetti
- 26. Chiamata JNI Java per caricare la libreria
- 27. Libreria di costruzione SVG per Java
- 28. Libreria Java per l'abbellimento del codice/formato
- 29. Libreria ePub per java o android
- 30. Libreria SSH conforme a FIPS per Java
Dai uno sguardo al quadro di primavera. Nello specifico, la capacità di iniezione delle dipendenze è la parte più utile per te. – cdeszaq