2015-06-30 8 views

risposta

5

È necessario inserire log4j.properties all'esterno del file jar perché sarà più semplice modificarlo. Se l'applicazione non impone un ricaricamento della configurazione (è possibile farlo), un semplice riavvio caricherà la configurazione (mentre la modifica all'interno di un file jar implica di solito una ricostruzione). Se l'applicazione sa come ricaricarla, le modifiche verranno applicate quasi istantaneamente. Questo è molto importante quando si dispone di un'applicazione nell'ambiente di produzione e si desidera modificare un'impostazione di registrazione (come il livello di registro) per ottenere maggiori informazioni ma non per arrestare l'applicazione per questo (o peggio, ricostruirla).

+0

Tutto ciò è vero e si applica anche alle distribuzioni dell'applicazione. Vi sono ulteriori motivi per non inserirli in un progetto * library *, ovvero che di solito non è possibile conoscere il contesto in cui verrà utilizzato e la configurazione che interessa il classpath, causando possibili problemi. – eis

+0

La possibilità di abilitare il debug su un server durante un errore è un vero toccasana. Per quanto testiamo, protegge solo dai problemi che pensavamo di testare. Avere la possibilità di ottenere ulteriori dettagli su ciò che sta accadendo si inserisce direttamente in test migliori in futuro. – Gus

1

No, non includerei log4j.properties nel tuo src/main/resources se è solo una libreria - la gente userà la tua libreria e le persone dovranno configurare come dovrebbe registrare.

Ma c'è un altro problema: se lo inserisci nel tuo barattolo, altri avranno anche il log4j nel loro percorso di classe. Quindi, se vogliono avere una configurazione personalizzata per log4j (cosa che faranno), ClassLoader sceglierà il primo file che può trovare.

Inoltre, se si dispone di una libreria, vorrei suggerire di utilizzare slf4j invece, in modo che gli utenti possano scegliere il loro framework di registrazione preferito.

Per il test degli scopi, è possibile includere log4j in src/test/resources.

+1

Non penso che OP abbia menzionato qualcosa sull'uso di Maven. src/main/resources e src/test/resources sono concetti di Maven. A parte questo sono d'accordo. – eis

Problemi correlati