Da documenti:
handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
Non ho trovato alcuna spiegazione per cui ho bisogno di gestori di scrittura e dopo .handlers? Esistono regole comuni per file di proprietà simili? Grazie.
La prima riga dichiara l’insieme di gestori che possono / saranno utilizzati, il secondo assegna i gestori allo specifico logger (in questo caso il logger root come .handlers
non è prefissato con nulla).
Successivamente in logging.properties
ogni gestore è configurato.
Per espandere la risposta di soulcheck , che all’inizio non ho capito …
La riga handlers = ...
può essere vista come una “dichiarazione variabile”.
handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler
“Dichiaro un logger di nome 1catalina
e 1catalina
FileHandler
, un logger di nome 2localhost
e tipo FileHandler
.. un logger di tipo ConsoleHandler
(non nominando l’ultimo poiché c’è solo uno, quindi nessuna ambiguità).”
D’altra parte, la riga .handlers
sarebbe un “compito”.
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
“Assegno i gestori 1catalina e console al logger root, il che significa che qualsiasi registrazione eseguita nell’applicazione verrà inoltrata a questi gestori (a meno che non venga eseguito un override)”
Il .
in .handlers
riferisce a ciò che stai applicando. In questo caso, poiché non c’è nulla a sinistra del .
, lo stai applicando al root logger, da cui ereditano tutti i logger.
Ma questo è esattamente lo stesso principio in azione in questa linea:
com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler
In questo caso c’è qualcosa a sinistra del .
per i .handlers
e questo significa che non assegniamo questi gestori al logger principale ma a un logger specifico. Con questa riga si dice “Sto sovrascrivendo l’assegnazione standard del logger-> per questo specifico logger. In questo caso, non agire come si farebbe in base alla configurazione del root logger. In questo caso, voglio che tu usi solo ConsoleHandler
per quel logger “.
Ciò significa che qualsiasi registrazione per MyClass
verrà inviata solo a ConsoleHandler
e non a nessun altro gestore. Le altre classi non sono interessate da questa linea.
Ancora una volta sto ripetendo la spiegazione di soulcheck, ma in modo più dettagliato, che mi serviva per capire la differenza.