From 21937affa1443816e63856a20d5b0783ff6c1922 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Mon, 5 Dec 2005 16:50:39 +0000 Subject: log4j can now be dynamically reconfigured using a http request git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@90 09dcff7a-b715-0410-9601-b79a96267cd0 --- orktrack/src/net/sf/oreka/orktrack/LogManager.java | 21 ++++++-- orktrack/src/net/sf/oreka/orktrack/OrkTrack.java | 33 ++++++------ .../orktrack/messages/ConfigureLogMessage.java | 60 ++++++++++++++++++++++ 3 files changed, 94 insertions(+), 20 deletions(-) create mode 100644 orktrack/src/net/sf/oreka/orktrack/messages/ConfigureLogMessage.java (limited to 'orktrack') diff --git a/orktrack/src/net/sf/oreka/orktrack/LogManager.java b/orktrack/src/net/sf/oreka/orktrack/LogManager.java index f9c293f..bf39568 100644 --- a/orktrack/src/net/sf/oreka/orktrack/LogManager.java +++ b/orktrack/src/net/sf/oreka/orktrack/LogManager.java @@ -15,6 +15,8 @@ package net.sf.oreka.orktrack; import java.io.File; +import net.sf.oreka.OrkException; + import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Level; import org.apache.log4j.Logger; @@ -27,6 +29,8 @@ public class LogManager { static LogManager logManager = null; + String ConfigFilename = null; + Logger rootLogger = null; Logger configLogger = null; Logger contextLogger = null; @@ -56,17 +60,24 @@ public class LogManager { return logManager; } - public void configure(String filename) { + public void configure(String filename) throws OrkException { + + ConfigFilename = filename; + configure(); + } + + public void configure() throws OrkException { // Check wether filename is valid - File file = new File(filename); + File file = new File(ConfigFilename); if (file.exists()) { + // Attempt to configure log4j - PropertyConfigurator.configure(filename); + PropertyConfigurator.configure(ConfigFilename); } else { - configLogger.warn("Log4j properties file does not exist:" + filename + " check your web.xml"); - } + throw new OrkException("Log4j properties file does not exist:" + ConfigFilename + " check your web.xml"); + } } /** diff --git a/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java b/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java index 83038a8..88d2547 100644 --- a/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java +++ b/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java @@ -20,6 +20,7 @@ import java.util.Date; import net.sf.oreka.HibernateManager; import net.sf.oreka.OrkObjectFactory; +import net.sf.oreka.orktrack.messages.ConfigureLogMessage; import net.sf.oreka.orktrack.messages.MetadataMessage; import net.sf.oreka.orktrack.messages.PingMessage; import net.sf.oreka.orktrack.messages.TapeMessage; @@ -37,6 +38,8 @@ public class OrkTrack { public static HibernateManager hibernateManager = new HibernateManager(); private static Date lastInMemoryObjectsSync = new Date(0); + static Logger logger = Logger.getLogger(OrkTrack.class); + public OrkTrack() { LogManager.getInstance().getConfigLogger().log(Level.INFO, "Entering OrkTrack"); @@ -44,25 +47,25 @@ public class OrkTrack { public static void initialize(String log4jConfigFile, String hibernateConfigFile, String configFile) { - LogManager.getInstance().configure(log4jConfigFile); - Logger log = LogManager.getInstance().getRootLogger(); - log.info("========================================"); - log.info(OrkTrack.APP_NAME + " starting ..."); - - // Register all OrkObjects - OrkObjectFactory.instance().registerOrkObject(new OrkTrackConfig()); - OrkObjectFactory.instance().registerOrkObject(new MetadataMessage()); - OrkObjectFactory.instance().registerOrkObject(new TapeMessage()); - OrkObjectFactory.instance().registerOrkObject(new UserStateMessage()); - OrkObjectFactory.instance().registerOrkObject(new PingMessage()); - - ConfigManager.getInstance().load(configFile); - try { + LogManager.getInstance().configure(log4jConfigFile); + + logger.info("========================================"); + logger.info(OrkTrack.APP_NAME + " starting ..."); + + // Register all OrkObjects + OrkObjectFactory.instance().registerOrkObject(new OrkTrackConfig()); + OrkObjectFactory.instance().registerOrkObject(new MetadataMessage()); + OrkObjectFactory.instance().registerOrkObject(new TapeMessage()); + OrkObjectFactory.instance().registerOrkObject(new UserStateMessage()); + OrkObjectFactory.instance().registerOrkObject(new PingMessage()); + OrkObjectFactory.instance().registerOrkObject(new ConfigureLogMessage()); + ConfigManager.getInstance().load(configFile); + hibernateManager.configure(hibernateConfigFile); } catch (Exception e) { - log.error("OrkTrack.initialize: Error configuring Hibernate:" + e.getMessage()); + logger.error("OrkTrack.initialize: Error configuring Hibernate:" + e.getMessage()); } /* diff --git a/orktrack/src/net/sf/oreka/orktrack/messages/ConfigureLogMessage.java b/orktrack/src/net/sf/oreka/orktrack/messages/ConfigureLogMessage.java new file mode 100644 index 0000000..ee1f6b5 --- /dev/null +++ b/orktrack/src/net/sf/oreka/orktrack/messages/ConfigureLogMessage.java @@ -0,0 +1,60 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +package net.sf.oreka.orktrack.messages; + +import net.sf.oreka.OrkException; +import net.sf.oreka.messages.AsyncMessage; +import net.sf.oreka.messages.SimpleResponseMessage; +import net.sf.oreka.messages.SyncMessage; +import net.sf.oreka.orktrack.LogManager; +import net.sf.oreka.serializers.OrkSerializer; + +import org.apache.log4j.Logger; + +public class ConfigureLogMessage extends SyncMessage { + + static Logger logger = Logger.getLogger(ConfigureLogMessage.class); + + + public ConfigureLogMessage() { + } + + @Override + public AsyncMessage process() { + + SimpleResponseMessage response = new SimpleResponseMessage(); + try { + LogManager.getInstance().configure(); + response.setSuccess(true); + } + catch (OrkException e) { + response.setSuccess(false); + response.setComment(e.getMessage()); + } + return response; + } + + public void define(OrkSerializer serializer) throws OrkException { + + } + + public String getOrkClassName() { + return "configurelog"; + } + + public void validate() { + // TODO Auto-generated method stub + + } +} -- cgit v1.2.3