this is my wrapper class for Log4J:
package com.uniserv.comn.logger;

import org.apache.log4j.*;
import java.util.*;
import java.io.*;

public class Logger
{

  private static boolean isInstantiated;
  private static Logger logger = null;
  private Category posTxtFileLog;
  private Category bosTxtFileLog;
  private Category bosJdbcLog;

  /** class constants **/
  public static final int DEBUG    = 0;
  public static final int INFO     = 1;
  public static final int WARN     = 2;
  public static final int ERROR    = 3;
  public static final int FATAL    = 4;

  private Logger()
  {
       posTxtFileLog = Category.getInstance( Logger.class.getName() + ".
     POSTXTLOG" );
       bosTxtFileLog = Category.getInstance( Logger.class.getName() + ".
     BOSTXTLOG" );
       bosJdbcLog      = Category.getInstance( Logger.class.getName() + ".
    BOSJDBCLOG" );
       Properties props = new Properties();

       try
       {
                  System.out.println("getting log4j.properties" );
                     props.load(new BufferedInputStream(this.getClass().
       getResourceAsStream("log4j.properties")));
           PropertyConfigurator.configure(props);
       }
       catch (IOException ioe)
       {
              ioe.printStackTrace();
       }

  }


  public static Logger getInstance()
  {
       if ( logger == null )
       {
              logger = new Logger();
       }

       return logger;
  }

  public void logPOS( int iLevel, String message )
  {
       switch(iLevel)
       {
              case DEBUG:
                     posTxtFileLog.debug(message);
                     break;
              case INFO:
                     posTxtFileLog.info(message);
                     break;
              case WARN:
                     posTxtFileLog.warn(message);
                     break;
              case ERROR:
                     posTxtFileLog.error(message);
                     break;
              case FATAL:
                     posTxtFileLog.fatal(message);
                     break;
       }

  }

  public void logBOS( int iLevel, String message )
  {

       switch(iLevel)
       {
              case DEBUG:
                     bosTxtFileLog.debug(message);
                     bosJdbcLog.debug(message);
                     break;
              case INFO:
                     bosTxtFileLog.info(message);
                     bosJdbcLog.info(message);
                     break;
              case WARN:
                     bosTxtFileLog.warn(message);
                     bosJdbcLog.warn(message);
                     break;
              case ERROR:
                     bosTxtFileLog.error(message);
                     bosJdbcLog.error(message);
                     break;
              case FATAL:
                     bosTxtFileLog.fatal(message);
                     bosJdbcLog.fatal(message);
                     break;
       }
  }

}

this is my log4j.properties
#root category
log4j.rootCategory=DEBUG, Appender2
log4j.category.Logger.POSTXTLOG=DEBUG, Appender2
log4j.category.Logger.BOSTXTLOG=DEBUG, Appender3
log4j.category.Logger.BOSJDBCLOG=DEBUG, Appender4

# Appender1
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%d [%t] %-5p %m%n

# Appender2
log4j.appender.Appender2=org.apache.log4j.FileAppender
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%d [%t] %-5p %m%n
log4j.appender.Appender2.File=F:\postxtlog.txt

# Appender3
log4j.appender.Appender3=org.apache.log4j.FileAppender
log4j.appender.Appender3.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender3.layout.ConversionPattern=%d [%t] %-5p %m%n
log4j.appender.Appender3.File=F:\MyDocuments\LOG 4J Docu\Test Codes\bostxtlog.
txt

# Appender4
log4j.appender.Appender4=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.Appender4.URL=jdbc:postgresql://localhost:5432/testdb
log4j.appender.Appender4.user=pau
log4j.appender.Appender4.password=pau
log4j.appender.Appender4.sql=INSERT INTO JDBCTEST (Message) VALUES ('%d - %c -
%p - %m')


the ejb that uses my logging class:

public class TimeKeepingSessionEJB implements SessionBean {


    SessionContext ctx = null;

    EntityServices entityServices = new EntityServices();

    LocalTimeKeeping timeKeeping         = null;
    LocalTimeKeepingHome timeKeepingHome = null;

    Logger logger = Logger.getInstance();

    /**
      * Default constructor
      */
     public TimeKeepingSessionEJB() {
     }

    public void ejbRemove() {}
    public void ejbPassivate () {}
    public void ejbActivate() {}

    /** A method requirement of session bean.*/
    public void ejbCreate() throws CreateException {
      try{
        System.out.println("Inside ejbcreate:");
        System.out.println("LOGGER OBJECT: " + logger );
        logger.logPOS(Logger.DEBUG, "Inside ejbcreate() of
TimeKeepingSessionEJB" );
        ServiceLocator serviceLocator = ServiceLocator.getInstance();
                timeKeepingHome = (LocalTimeKeepingHome)
                       serviceLocator.getLocalHome(entityServices.TIME_KEEPING);
      } catch (Exception e) {
          //      logger.logPOS(Logger.ERROR, "Exception @ ejbcreate(): " + e.
getMessage() );
            e.printStackTrace();
      }
    }

    /** A method requirement of session bean.*/
    public void setSessionContext(SessionContext oSessionContext) {
      this.ctx = oSessionContext;
    }

/*********************for testing only*******************************/
    public void getTimeKeeping() throws Exception {
      try {

        Context context = new InitialContext();
        Object objRef = context.lookup("java:comp/env/ejb/TimeKeepingEJB");
        timeKeepingHome = (LocalTimeKeepingHome)
               PortableRemoteObject.narrow(objRef, LocalTimeKeepingHome.class);
      }
      catch (Exception e) {
        System.out.println("Error TimeKeepingSessionEJB");
        e.printStackTrace();
      }
  }
/*********************end of for testing only*******************************/


 /**
   * addTimeKeeping(TimeKeepingVO timeKeepingVO)
   * @ param
   *   TimeKeepingVO timeKeepingVO - Value Object for TimeKeeping.
   */
  public TimeKeepingVO addTimeKeeping(TimeKeepingVO timeKeepingVO) throws
AddException {

     try {
//         getTimeKeeping();
       logger.logPOS(Logger.DEBUG, "addTimeKeeping: creating instance" );
         timeKeepingHome.create(timeKeepingVO);
         return timeKeepingVO;

     } catch (Exception e) {
         e.printStackTrace();
         throw new AddException(e.getMessage());
     }
  }


How do i configure Log4j inside JBoss? i find it weird that after JBoss deploys
my application and when i run it the logging at the console stops. Instead, the
JBoss logging continues inside F:\postxtlog.txt (defined as the file appender#
2 above ) and the comments i put inside my own methods ( e.g.  logger.
logPOS(Logger.DEBUG, "Inside ejbcreate() of TimeKeepingSessionEJB" ) ) were not
reflected inside the said file.

************************************
Paulo A. Bengero
Application Systems Engineer
Team ORION
************************************

------------------------------------------------------------------------

FPI Gateway Scanner scanned email-body and no virus found
------------------------------------------------------------------------

Reply via email to