Mi piacerebbe avere un file logback.xml per la produzione e un altro con diversi parametri sul mio ambiente di staging. Il mio codice è in grado di riconoscere automaticamente al runtime se è in produzione o in runtime. C'è un modo per impostare il file di configurazione di logback in fase di runtime?Come impostare il file di configurazione di logback in fase di runtime?
risposta
Metodo 1: Caricamento da diversi file
È possibile tenere due file differenti configurazioni e caricare il file per l'ambiente specifico con JoranConfiguratior#doConfigure
all'avvio dell'applicazione.
Vedere http://logback.qos.ch/manual/configuration.html#joranDirectly. Esempio codice preso anche da lì con modifiche per il vostro caso:
public class MyApp3 {
final static String STAGING_CONFIGURATION = "/path/to/statging.xml";
final static String PRODUCTION_CONFIGURATION = "/path/to/production.xml";
final static Logger logger = LoggerFactory.getLogger(MyApp3.class);
public static void main(String[] args) {
// assume SLF4J is bound to logback in the current environment
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
// determine environmental specific configuration path
final String path = isProdcution() ? PRODUCTION_CONFIGURATION : STAGING_CONFIGURATION;
try {
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(context);
// Call context.reset() to clear any previous configuration, e.g. default
// configuration. For multi-step configuration, omit calling context.reset().
context.reset();
configurator.doConfigure(path);
} catch (JoranException je) {
// StatusPrinter will handle this
}
StatusPrinter.printInCaseOfErrorsOrWarnings(context);
logger.info("Entering application.");
Foo foo = new Foo();
foo.doIt();
logger.info("Exiting application.");
}
}
Naturalmente, il codice per ottenere il nome del file corretto possibile ulteriormente modificare adattano alle vostre esigenze. Inoltre, ci sono alcuni metodi sovraccarichi doConfigure
(http://logback.qos.ch/apidocs/ch/qos/logback/core/joran/GenericConfigurator.html#doConfigure%28java.io.File%29) che accettano correttamente InputStreams, File e URL.
Metodo 2: Usare condizioni in un unico file
Se è possibile determinare il vostro ambiente utilizzando build di logbag in proprietà o proprietà del sistema, è possibile utilizzare le configurazioni condizionali:
http://logback.qos.ch/manual/configuration.html#conditional
<!-- if-then form -->
<if condition="condition for your production">
<then>
...
</then>
<else>
...
</else>
</if>
- 1. Configurazione di Logback in Eclipse
- 2. Quando viene caricato il file di configurazione di logback?
- 3. FileNamePattern in RollingFileAppender - configurazione di logback
- 4. Configurazione di ibernazione in runtime
- 5. Log4perl: Come caricare dinamicamente le appendici in fase di runtime?
- 6. Modificare la locale in fase di runtime?
- 7. Caricamento XAML in fase di runtime?
- 8. Aggiunta dinamica della configurazione del contesto di primavera in fase di runtime?
- 9. variabili d'ambiente da Leggi logback file di configurazione
- 10. Come posso fare in modo che Entity Framework Type Provider utilizzi il file di configurazione runtime?
- 11. Come posso disabilitare le virgolette PHP in fase di runtime?
- 12. Cambia indirizzo/porta di WSDL EndPointAddress in fase di runtime?
- 13. Come viene interpretato ed eseguito XAML in fase di runtime?
- 14. Come posso caricare un modulo Perl in fase di runtime?
- 15. Perché il codice Scala lancia IllegalAccessError in fase di runtime?
- 16. Logback - insieme il nome del file di registro di programmazione
- 17. Come ottenere BatteryStats in Android in fase di runtime?
- 18. Log4j: creazione/modifica di appendici in fase di runtime, file di registro ricreato e non aggiunto
- 19. Come sizeof (array) funziona in fase di runtime?
- 20. Come si ridimensiona Fancybox in fase di runtime?
- 21. Posso impostare "android: layout_below" in fase di runtime, a livello di programmazione?
- 22. Come emettere ed eseguire bytecode Java in fase di runtime?
- 23. Come modificare un MOMP POM in fase di runtime?
- 24. Come creare i controlli in fase di runtime?
- 25. Genera dinamicamente le classi in fase di runtime in php?
- 26. Come aggiungere immagini nel file di risorse incorporato in fase di runtime?
- 27. Scaricamento di un agente JVMTI in fase di runtime?
- 28. Aggiorna la politica di sicurezza Java in fase di runtime?
- 29. Il modo migliore per impostare una stringa di connessione del set di dati fortemente tipizzata in fase di runtime?
- 30. Come determinare il tipo di oggetto effettivo in fase di runtime in C++;
usi Spring? – John
no! Plain old java. – poiuytrez