LoggingInitListener.java
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 }