jboss eap 6.1 - Log4j's configureAndWatch method not working
rajajboss Oct 15, 2014 1:50 PMDear All,
My requirement is I need to change the LOG level at RUNTIME WITHOUT restarting jboss eap 6.1 server.
Below code is working when I run as a standalone application.
But the same code is NOT working in JBOSS.
When I changed the debug level at run time, it is not reflecting.
Client code:
- import java.io.IOException;
- public class Log4jAppTest {
- static LoggerManager logger = LoggerManager.getLogger(Log4jAppTest.class);
- public static void main(String[] args) throws IOException {
- while(true){
- logger.debug(logger.getBundle().getString("debug"));
- logger.info(logger.getBundle().getString("info"));
- logger.warn(logger.getBundle().getString("warn"));
- logger.error(logger.getBundle().getString("error"));
- logger.fatal(logger.getBundle().getString("fatal"));
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
LoggerManager.java
--------------------------------
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.net.URL;
- import java.net.URLClassLoader;
- import java.nio.file.Files;
- import java.nio.file.LinkOption;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.Locale;
- import java.util.Properties;
- import java.util.ResourceBundle;
- import org.apache.log4j.Logger;
- import org.apache.log4j.PropertyConfigurator;
- public class LoggerManager {
- private ResourceBundle bundle = null;
- private static LoggerManager instance;
- private Logger logger = null;
- private LoggerManager(String log4jPath, String bundlePath,
- String bundleFileName, Locale locale, Logger logger)
- throws IOException {
- PropertyConfigurator.configureAndWatch(log4jPath, 5000);
- setLogger(logger);
- File file = new File(bundlePath);
- URL[] urls = { file.toURI().toURL() };
- ClassLoader loader = new URLClassLoader(urls);
- bundle = ResourceBundle.getBundle(bundleFileName, locale, loader);
- }
- public static LoggerManager getLogger(Class<?> class1) {
- try {
- Properties props = LoggerManager
- .loadMDFProperties("C:\\testcode\\MavenWeb\\src\\main\\resources\\XXX.properties");
- if (instance == null) {
- instance = new LoggerManager(
- props.getProperty("log4jFileLocation"),
- props.getProperty("ResourceBundlePath"), "MDFBundle",
- new Locale(props.getProperty("i18n")),
- Logger.getLogger(class1));
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- return instance;
- }
- /**
- * Load properties.
- *
- * @param propertiesFile
- * path to properties file
- * @return filled in properties object
- * @throws IOException
- * if something goes wrong
- */
- @SuppressWarnings("unused")
- public static Properties loadMDFProperties(final String propertiesFile)
- throws IOException {
- // Properties object we are going to fill up.
- Properties properties = new Properties();
- // If file exists as an absolute path, load as input stream.
- final Path path = Paths.get(propertiesFile);
- if (Files.exists(path, LinkOption.NOFOLLOW_LINKS)) {
- properties.load(new FileInputStream(propertiesFile));
- } else {
- // Otherwise, use resource as stream.
- properties.load(LoggerManager.class.getClassLoader()
- .getResourceAsStream(propertiesFile));
- }
- return properties;
- }
- public ResourceBundle getBundle() {
- return bundle;
- }
- public void setBundle(ResourceBundle bundle) {
- this.bundle = bundle;
- }
- public Logger getLogger() {
- return logger;
- }
- public void setLogger(Logger logger) {
- this.logger = logger;
- }
- public void trace(Object o) {
- logger.trace(o);
- }
- public void trace(Object o, Throwable e) {
- logger.trace(o, e);
- }
- public void debug(Object o) {
- logger.debug(o);
- }
- public void debug(Object o, Throwable e) {
- logger.debug(o, e);
- }
- public void info(Object o) {
- logger.info(o);
- }
- public void info(Object o, Throwable e) {
- logger.info(o, e);
- }
- public void warn(Object o) {
- logger.warn(o);
- }
- public void warn(Object o, Throwable e) {
- logger.warn(o, e);
- }
- public void error(Object o) {
- logger.error(o);
- }
- public void error(Object o, Throwable e) {
- logger.error(o, e);
- }
- public void fatal(Object o) {
- logger.fatal(o);
- }
- public void fatal(Object o, Throwable e) {
- logger.fatal(o, e);
- }
- }
Please help me on this.