From d4457e3d53c76ea9677383460cfb73d74975cc03 Mon Sep 17 00:00:00 2001 From: Peter Hormanns Date: Wed, 3 Apr 2013 13:38:50 +0200 Subject: [PATCH] close #102 Logging, Queue --- .../de/hsadmin/core/qserv/CommandShell.java | 24 ++-- .../de/hsadmin/core/qserv/QueueServer.java | 114 ++++++++---------- hsarback/src/de/hsadmin/core/util/Config.java | 3 +- 3 files changed, 63 insertions(+), 78 deletions(-) diff --git a/hsarback/src/de/hsadmin/core/qserv/CommandShell.java b/hsarback/src/de/hsadmin/core/qserv/CommandShell.java index 7760d22..cfee80f 100644 --- a/hsarback/src/de/hsadmin/core/qserv/CommandShell.java +++ b/hsarback/src/de/hsadmin/core/qserv/CommandShell.java @@ -6,9 +6,14 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; +import java.util.logging.Level; +import java.util.logging.Logger; public class CommandShell { + private static final Logger logger = Logger.getLogger("de.hsadmin.core.qserv"); + + public static String execute(String command) throws ShellException { return execute(command, null); } @@ -23,10 +28,7 @@ public class CommandShell { logCommand += "< 0) - System.setOut(new PrintStream(new FileOutputStream(stdout))); - String stderr = System.getProperty("hsadmin.stderr"); - if (stderr != null && stderr.length() > 0) - System.setErr(new PrintStream(new FileOutputStream(stderr))); - + System.setProperty("java.util.logging.config.file", props.getProperty("hsadmin.log.file", System.getProperty("user.home") + "/.hsadmin.log.properties")); final QueueServer qServ = new QueueServer(); qServ.setJmsFactory(props.getProperty("hsadmin.jms.factory")); qServ.setJmsSystemQueue(props.getProperty("hsadmin.jms.system-queue")); qServ.setJmsStatusQueue(props.getProperty("hsadmin.jms.status-queue")); qServ.setJmsUserName(props.getProperty("hsadmin.jms.username")); qServ.setJmsPassWord(props.getProperty("hsadmin.jms.password")); - qServ.setServiceEMail(props.getProperty("hsadmin.email.service")); - System.out.println("=================================================="); - System.out.println("hsadmin-qserv " + VERSION_NO + " started using:"); - System.out.println("queue server: " + props.getProperty("hsadmin.jms.factory")); - System.out.println("system queue: " + props.getProperty("hsadmin.jms.system-queue")); - System.out.println("status queue: " + props.getProperty("hsadmin.jms.status-queue")); - System.out.println("queue user: " + props.getProperty("hsadmin.jms.username")); - System.out.println("=================================================="); + qServ.setServiceEMail(props.getProperty("hsadmin.log.email")); + Logger logger = Logger.getLogger("de.hsadmin.core.qserv"); + logger.log(Level.CONFIG, "hsadmin-qserv " + VERSION_NO + " started using:" + + "\nqueue server: " + props.getProperty("hsadmin.jms.factory") + + "\nsystem queue: " + props.getProperty("hsadmin.jms.system-queue") + + "\nstatus queue: " + props.getProperty("hsadmin.jms.status-queue") + + "\nqueue user: " + props.getProperty("hsadmin.jms.username")); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { @@ -100,11 +83,29 @@ public class QueueServer extends QueueCommons implements MessageListener, Except } } - private void setServiceEMail(String property) { - if (property == null) { + private static String userHelp(File propFile) { + return "Wrong number of arguments.\n" + + "With no arguments '" + + propFile + + "' will be used as config file.\n" + + "Or give a properties file as single argument.\n\n" + + "Example config file:\n\n" + + "hsadmin.jms.factory=QueueCF\n" + + "hsadmin.jms.system-queue=hive-h01\n" + + "hsadmin.jms.status-queue=queue/hsadminStatus\n" + + "hsadmin.jms.username=hive-h01\n" + + "hsadmin.jms.password=geheimeskennwort\n"; + } + + public QueueServer() { + logger = Logger.getLogger("de.hsadmin.core.qserv"); + } + + private void setServiceEMail(String emailAddress) { + if (emailAddress == null || emailAddress.isEmpty()) { serviceEMail = "peter@ostwall195.de"; } else { - serviceEMail = property; + serviceEMail = emailAddress; } } @@ -123,26 +124,24 @@ public class QueueServer extends QueueCommons implements MessageListener, Except receiver.setMessageListener(this); return true; } catch (Exception e) { - System.out.println(e.getMessage()); + logger.log(Level.WARNING, e.getMessage(), e); return false; } } - + public synchronized void onMessage(Message jmsMessage) { - // TODO logging - System.out.println("\nonMessage(" + jmsMessage); + logger.log(Level.INFO, jmsMessage.toString()); QueueTask task = null; try { ObjectMessage jmsObjectMessage = (ObjectMessage) jmsMessage; task = (QueueTask) jmsObjectMessage.getObject(); Processor processor = task.getProcessor(); - System.out.println("processing (" + task.getTitle() + " | started(" + logger.log(Level.INFO, "processing (" + task.getTitle() + " | started(" + task.getStarted() + ") |" + task.getDetails() + "|" + processor + ")"); - System.out.println("with " + processor); try { processor.process(); - System.out.println("done"); + logger.log(Level.INFO, "done"); } catch (ProcessorException e) { logException(e); task.setException(e); @@ -158,19 +157,16 @@ public class QueueServer extends QueueCommons implements MessageListener, Except } private void logException(Throwable t) { - System.err.println("exception " + t); // TODO: logging - t.printStackTrace(System.err); - if (t.getCause() != null) { - System.err.println("caused by exception " - + t.getCause()); // TODO: logging - t.getCause().printStackTrace(System.err); - } else - System.err.println("no further cause available"); + logger.log(Level.SEVERE, t.getMessage(), t); + Throwable cause = t.getCause(); + if (cause != null) { + logger.log(Level.SEVERE, "cause: " + t.getMessage(), t); + } } @Override public void onException(JMSException e) { - System.out.println("Exception: " + e.getMessage()); + logger.log(Level.WARNING, e.getMessage(), e); close(); while (!connect()) { try { @@ -197,22 +193,18 @@ public class QueueServer extends QueueCommons implements MessageListener, Except Session statusSession = null; Connection statusConnection = null; try { - System.out.println("sendStatus( " + queueMessage + ")"); + logger.log(Level.INFO, "sendStatus(" + queueMessage + ")"); Context ctx = new InitialContext(); - System.out.println("Created InitialContext"); ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(jmsFactory); - System.out.println("connectionFactory= " + connectionFactory.toString()); Destination queue = (Destination) ctx.lookup(jmsStatusQueue); statusConnection = connectionFactory.createConnection(jmsUserName, jmsPassWord); statusSession = statusConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); producer = statusSession.createProducer(queue); ObjectMessage statusMessage = statusSession.createObjectMessage(queueMessage); - System.out.println("send( " + statusMessage + ")"); + logger.log(Level.INFO, "send(" + statusMessage + ")"); producer.send(statusMessage); } catch (Exception statusException) { - // TODO: log exception - System.out.println("failed"); - statusException.printStackTrace(System.err); + logger.log(Level.SEVERE, statusException.getMessage(), statusException); } finally { // close JMS try { producer.close(); } catch (Exception exc) { } diff --git a/hsarback/src/de/hsadmin/core/util/Config.java b/hsarback/src/de/hsadmin/core/util/Config.java index e917db4..cbc3e75 100644 --- a/hsarback/src/de/hsadmin/core/util/Config.java +++ b/hsarback/src/de/hsadmin/core/util/Config.java @@ -43,7 +43,8 @@ public class Config { } public String getProperty(String propertyName) { - return props.getProperty(propertyName).trim(); + String property = props.getProperty(propertyName); + return property; } public String getProperty(String propertyName, String defaultValue) {