This is an automated email from the git hooks/post-receive script. New commit to branch feature/7494 in repository observe. See http://git.codelutin.com/observe.git commit 0ede2d64482f14b8c61790f02eff8eeaaad7e67d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Aug 30 15:55:55 2015 +0200 Faire fonctionner le chargement dynamqieu de la configuration des logs --- .../ObserveWebApplicationConfiguration.java | 67 +++++++++++----------- .../src/main/resources/observeweb-log4j.conf | 2 +- pom.xml | 2 +- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java index 4429dcc..eea7653 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java @@ -1,6 +1,8 @@ package fr.ird.observe.application.web.configuration; import com.google.common.base.Charsets; +import com.google.common.io.CharSource; +import com.google.common.io.Resources; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.LogManager; @@ -10,11 +12,9 @@ import org.nuiton.config.ApplicationConfigHelper; import org.nuiton.config.ApplicationConfigProvider; import org.nuiton.config.ArgumentsParserException; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; import java.nio.file.Files; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; @@ -90,6 +90,10 @@ public class ObserveWebApplicationConfiguration { return applicationConfig.getOptionAsFile(ObserveWebApplicationConfigurationOption.USERS_CONFIGURATION_FILE.getKey()); } + public File getLog4jConfigurationFile() { + return applicationConfig.getOptionAsFile(ObserveWebApplicationConfigurationOption.LOG4J_CONFIGURATION_FILE.getKey()); + } + public int getSessionExpirationDelay() { return applicationConfig.getOptionAsInt(ObserveWebApplicationConfigurationOption.SESSION_EXPIRATION_DELAY.getKey()); } @@ -124,12 +128,11 @@ public class ObserveWebApplicationConfiguration { throw new ObserveWebApplicationConfigurationInitException("Impossible de créer le répertoire temporaire de l'application (" + temporaryDirectory + ")", e); } - boolean devMode = isDevMode(); - File databasesConfigurationFile = getDatabasesConfigurationFile(); File usersConfigurationFile = getUsersConfigurationFile(); + File log4jConfigurationFile = getLog4jConfigurationFile(); - if (devMode) { + if (isDevMode()) { if (!databasesConfigurationFile.exists()) { @@ -157,6 +160,21 @@ public class ObserveWebApplicationConfiguration { throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de configuration des utilisateurs pour développement", e); } } + + if (!log4jConfigurationFile.exists()) { + + // Generate a default log4jConfigurationFile + try { + CharSource charSource = Resources.asCharSource(getClass().getResource("/observeweb-log4j.conf"), Charsets.UTF_8); + String log4jFileContent = charSource.read(); + if (log.isInfoEnabled()) { + log.info("Generate a default log4jConfigurationFile for tests purpose only:\n" + log4jFileContent); + } + Files.write(log4jConfigurationFile.toPath(), log4jFileContent.getBytes()); + } catch (IOException e) { + throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de log4j pour développement", e); + } + } } if (!databasesConfigurationFile.exists()) { @@ -167,9 +185,7 @@ public class ObserveWebApplicationConfiguration { throw new ObserveWebApplicationConfigurationInitException("Le fichier de configuration des utilisateurs n'existe pas : " + usersConfigurationFile); } - if (!devMode) { - initLog(); - } + initLog(); } @@ -193,35 +209,18 @@ public class ObserveWebApplicationConfiguration { protected void initLog() { - String logFilePath = applicationConfig.getOption(ObserveWebApplicationConfigurationOption.LOG4J_CONFIGURATION_FILE.getKey()); - - URL resource; - if (logFilePath.startsWith("classpath:")) { - resource = getClass().getResource(logFilePath.substring(10)); - - } else { - File logFile = applicationConfig.getOptionAsFile(ObserveWebApplicationConfigurationOption.LOG4J_CONFIGURATION_FILE.getKey()); - - if (!logFile.exists()) { - throw new ObserveWebApplicationConfigurationInitException("Le fichier de configuration des logs (" + logFile + ") n'existe pas"); - } - - try { - resource = logFile.toURI().toURL(); - } catch (MalformedURLException e) { - - throw new ObserveWebApplicationConfigurationInitException("L'url du fichier de configuration des logs (" + logFile + ") est malformée", e); - - } + File logFile = getLog4jConfigurationFile(); + if (!logFile.exists()) { + throw new ObserveWebApplicationConfigurationInitException("Le fichier de configuration des logs (" + logFile + ") n'existe pas"); } if (log.isInfoEnabled()) { - log.info("Chargement du fichier de de log4j depuis " + resource); + log.info("Chargement du fichier de log : " + logFile); } Properties finalLogConfigurationProperties = new Properties(); - try (InputStream inputStream = resource.openStream()) { + try (BufferedReader inputStream = Files.newBufferedReader(logFile.toPath(), Charsets.UTF_8)) { Properties logConfigurationProperties = new Properties(); logConfigurationProperties.load(inputStream); @@ -229,10 +228,10 @@ public class ObserveWebApplicationConfiguration { for (Map.Entry<Object, Object> entry : logConfigurationProperties.entrySet()) { String key = (String) entry.getKey(); String value = (String) entry.getValue(); - String newValue = applicationConfig.getOption(value); + String newValue = applicationConfig.replaceRecursiveOptions(value); finalLogConfigurationProperties.setProperty(key, newValue); } - } catch (IOException e) { + } catch (Exception e) { throw new ObserveWebApplicationConfigurationInitException("Impossible de charger le fichier de configuration des logs", e); } @@ -241,7 +240,7 @@ public class ObserveWebApplicationConfiguration { log = LogFactory.getLog(ObserveWebApplicationConfiguration.class); if (log.isInfoEnabled()) { - log.info("Initialisation de log4j terminées depuis " + logFilePath); + log.info("Configuration des logs chargée depuis le fichier " + logFile); } } diff --git a/observe-application-web/src/main/resources/observeweb-log4j.conf b/observe-application-web/src/main/resources/observeweb-log4j.conf index 2d6733f..f4d9189 100644 --- a/observe-application-web/src/main/resources/observeweb-log4j.conf +++ b/observe-application-web/src/main/resources/observeweb-log4j.conf @@ -9,7 +9,7 @@ log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%c:%L) %M - %m%n # file output... log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=${observeweb.baseDirectory}/log/observeweb-${observeweb.version}.log +log4j.appender.file.File=${observeweb.baseDirectory}/log/observeweb-${observeweb.build.version}.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=4 log4j.appender.file.layout=org.apache.log4j.PatternLayout diff --git a/pom.xml b/pom.xml index f0fede6..f154559 100644 --- a/pom.xml +++ b/pom.xml @@ -277,7 +277,7 @@ <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-config</artifactId> - <version>3.0-rc-2</version> + <version>3.0-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.