web-dev-qa-db-fra.com

Slf4j - Logback: Comment configurer les enregistreurs en runtime?

nous utilisons un journal de bord avec notre projet, je souhaite configurer l'enregistreur selon certaines valeurs de base de données, c'est-à-dire que si une valeur de DB est définie sur true, puis l'enregistreur doit utiliser les annexes de fichiers et de DB, si c'est FALSE SE FAUX, il ne doit donc utiliser que DB Appendender ,

Je souhaite également conserver avec des enregistreurs finaux statiques, donc je ne créerai pas de nouvelle instance chaque fois que l'enregistreur est appelé,

alors, comment puis-je faire quelque chose comme ça?

Salutations,

26
Amr Faisal

Vous devez configurer le logback par programme comme décrit dans cet exemple .

public class Main {

   public static void main(String[] args) {
     Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");

     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     FileAppender<LoggingEvent> fileAppender =
                       (FileAppender<LoggingEvent>) logger.getAppender("file");
     if(fileAppender != null) {
       fileAppender.stop();
       fileAppender.setFile("new.log");
       PatternLayout pl = new PatternLayout();
       pl.setPattern("%d %5p %t [%c:%L] %m%n)");
       pl.setContext(lc);
       pl.start();
       fileAppender.setLayout(pl);
       fileAppender.setContext(lc);
       fileAppender.start();
     }
     ... etc    
   }
}
19
fglez

Y a-t-il une raison spécifique derrière la lecture de la propriété de configuration de la base de données? Une suggestion serait d'utiliser JNDI. LOWBACK peut lire les valeurs configurées JNDI à l'aide de la balise.

1
Andy Dufresne