Problemi a loggare dalla nostra applicazione web, utilizzando jboss as 7.1?
Dopo diversi tentativi di gestire le risorse, il file di property , classloader e quanto altro, l’unica soluzione che ho trovato è la seguente.
Jboss utilizza e configura in fase di startup log4j e quindi tutti i nostri messaggi sono intercettati e gestiti dalla sua configurazione. Per bloccare questo comportamento dobbiamo usare le jboss-deployment-structure, ovvero mettere delle direttive nel nostro ear o nel nostro war, tramite file di configurazione, per indicare di escludere i moduli di jboss inerenti il logging, sull’applicazione che stiamo deployando.
Questo sistema evita che jboss in automatico inietti le dipendenze e le responsabilità del logging dei suoi moduli di logging.
il seguente file va messo nella meta-inf dell’Ear o del War.
il seguente esempio è riferito al deploy di un ear, con un war al suo interno.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.apache.log4j" /> <module name="org.slf4j"/> </exclusions> </deployment> <sub-deployment name="miaappweb.war"> <exclusions> <module name="org.apache.log4j" /> <module name="org.slf4j"/> </exclusions> </sub-deployment> </jboss-deployment-structure> |
Spero sia chiaro.
Aggiunta per Spring:
se si utilizza anche Spring Framework, allora nella lista delle esclusioni va aggiunta anche la librera delle Commons logging, in quanto spring utilizza l’astrazione di Apache per la gestione del logging interno.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.apache.log4j" /> <module name="org.slf4j"/> <module name="org.apache.commons.logging"/> </exclusions> </deployment> <sub-deployment name="miaappweb.war"> <exclusions> <module name="org.apache.log4j" /> <module name="org.slf4j"/> <module name="org.apache.commons.logging"/> </exclusions> </sub-deployment> </jboss-deployment-structure> |
non riesco ad ottenere i log di spring(vengono sempre presi dall’appender definito dentro jboss)
devi aggiungere anche le commons logging. ora aggiungo un pezzo..