01 package com.bea.medrec.listeners;
02
03 import weblogic.application.ApplicationLifecycleEvent;
04 import weblogic.application.ApplicationLifecycleListener;
05 import weblogic.logging.log4j.Log4jLoggingHelper;
06 import weblogic.logging.LoggerNotAvailableException;
07 import org.apache.log4j.Logger;
08 import org.apache.log4j.Appender;
09 import org.apache.log4j.BasicConfigurator;
10 import org.apache.log4j.PropertyConfigurator;
11 import org.apache.log4j.xml.DOMConfigurator;
12 import java.util.Calendar;
13 import java.util.Enumeration;
14 import java.text.SimpleDateFormat;
15
16 public class LoggingInitListener extends ApplicationLifecycleListener {
17
18 public void postStart(ApplicationLifecycleEvent evt) {
19 logMsg("Notice", "Initializing MedRec logger - appending to WLS Server "+
20 "logger");
21 Logger tmpLogger;
22 try {
23 tmpLogger = Log4jLoggingHelper.getLog4jServerLogger();
24 Appender app = Logger.getRootLogger().getAppender(
25 "MedRecLog4jRollingFileAppender");
26 if (app != null) {
27 tmpLogger.addAppender(app);
28 } else {
29 throw new Exception("MedRecLog4jRollingFileAppender is null");
30 }
31 } catch(Exception ex) {
32 logMsg("Warning", "Unable to get a reference to the log4j Logger. Will "+
33 "use non-server logger: "+ex.getMessage());
34 String logFile = System.getProperty("log4j.configuration");
35 if (logFile == null) {
36 logMsg("Notice", "Log file not found, calling BasicConfigurator");
37 BasicConfigurator.configure();
38 } else {
39 logFile = logFile.substring(logFile.indexOf(':')+1);
40 logMsg("Notice", "Calling DOMConfigurator on: "+logFile);
41 DOMConfigurator.configure(logFile);
42 }
43 }
44 }
45
46 public void postStop(ApplicationLifecycleEvent evt) {
47 logMsg("Notice", "Detaching MedRec logger from WLS Server logger");
48 Logger tmpLogger;
49 try {
50 tmpLogger = Log4jLoggingHelper.getLog4jServerLogger();
51 Appender app = Logger.getRootLogger().getAppender(
52 "MedRecLog4jRollingFileAppender");
53 if (app != null) {
54 tmpLogger.removeAppender(app);
55 } else {
56 throw new Exception("MedRecLog4jRollingFileAppender is null");
57 }
58 } catch(Exception ex) {
59 logMsg("Warning", "Unable to detach MedRec logger: "+ex.getMessage());
60 }
61 }
62
63 private void logMsg(String type, String message) {
64 System.out.println("<"+getDisplayDate()+"> <"+type+"> <MedRec Logging> "+
65 message);
66 }
67
68 private String getDisplayDate() {
69 SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a z");
70 return format.format(Calendar.getInstance().getTime());
71 }
72
73 public static void main(String[] args) {
74 // not implemented
75 }
76 }
|