Je sais que je peux définir le chemin logback.xml comme ceci:
Spécifier l'emplacement du fichier de configuration par défaut en tant que propriété système
Vous pouvez spécifier l'emplacement du fichier de configuration par défaut avec une propriété système nommée "logback.configurationFile". La valeur de cette propriété peut être une URL, une ressource sur le chemin de classe ou un chemin vers un fichier externe à l'application.
Java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
mais comment puis-je le faire dans le code?
Vous pouvez utiliser:
System.setProperty("logback.configurationFile", "/path/to/config.xml");
Mais cela devrait se produire avant que le logback ne soit chargé, c'est-à-dire quelque chose comme:
class Main {
static { System.setProperty("logback.configurationFile", "/path/to/config.xml");}
private final Logger LOG = LoggerFactory.getLogger(Main.class);
public void main (String[] args) { ... }
}
Note: je ne l'ai pas testé mais ça devrait marcher.
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
InputStream configStream = FileUtils.openInputStream(logbackPropertiesUserFile);
configurator.setContext(loggerContext);
configurator.doConfigure(configStream); // loads logback file
configStream.close();
la modification des variables d’environnement peut ne pas toujours être réalisable ..__ Pour le faire correctement, reportez-vous au manuel de journalisation:
http://logback.qos.ch/manual/configuration.html#joranDirectly
Je veux juste partager ce que j'ai fait à la fin avec une application Jersey-Spring:
MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(final ServletContext servletContext) throws ServletException {
servletContext.addListener(new LogbackConfigListener());
try { LogbackConfigurer.initLogging(servletContext.getRealPath("/WEB-INF/logback.xml")); }
catch (FileNotFoundException | JoranException e) { e.printStackTrace(); }
}
}
Je dois aussi ajouter que j'ai dû déménager
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.4</version>
<scope>compile</scope></dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
<scope>compile</scope></dependency>
à partir de l'exécution (projet parent dans mon cas) à compiler.
Inclure un autre fichier XML de journalisation pour changer le chemin d'accès dans logback-spring.xml
include resource = "/path/to/logback.xml"
ajouter des données dans inclus tags dans logback.xml