hi am using log4j for sateless bean i want to all INFO and DEBUG Massage in one file say xx_11.i was able to write for client part but i am unable to get from Bean in the xx_11. details of problem is given below i mention in config file as log4j.appender.A2.File=xx_11 and i declere in Client Catgory as static Category CAT = Category.getInstance(Client.class.getName()); and i set PropertyConfigurator as PropertyConfigurator.configure(" sort.lcf"); when i run this Client i get the out put in xx_11 which is from only Client and i am unable to get from the Bean my code is this Client is package com.mindtree.emsFramework.dim; import java.rmi.RemoteException; import java.util.Collection; import java.util.Hashtable; import java.util.Properties; import java.util.Vector; import java.util.Iterator; import javax.ejb.CreateException; import javax.ejb.DuplicateKeyException; import javax.ejb.FinderException; import javax.ejb.ObjectNotFoundException; import javax.ejb.RemoveException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.rmi.PortableRemoteObject; import java.util.Enumeration; import com.mindtree.emsFramework.common.SerializableEmsAlarm; import com.mindtree.emsFramework.common.SerializableMOInstance; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.Category; import org.apache.log4j.Priority; import org.apache.log4j.BasicConfigurator; public class Client { private String url = null; private DatabaseLogHome home ; private String primarykey = null; private String arraylength=null; static Category CAT = Category.getInstance(Client.class.getName()); public Client(String url,String primarykey) throws NamingException { this.url= url; this.primarykey = primarykey; home = lookupHome(); } /** * <tt>.Client "t3://localhost:8001" 10020</tt> * <p> * @param url URL such as "t3://localhost:7001" of Server */ public static void main(String[] args) { BasicConfigurator.configure(); System.out.println("\nBeginning dim.Client...\n"); CAT.info("Populating an array of "); Client client = null; try { String name=null; if (args[1]==null) {usage("sosos"); CAT.info("SDFDGDF");} name=args[1]; client = new Client(args[0],args[1]); } catch (NamingException ne) { CAT.info("Unable to look up the beans home: " + ne.getMessage()); System.exit(1); } CAT.info("Populating an array of "); Client.init(args[2]); try { DatabaseLog ac = client.createDatabaseLog(); //SerializableEmsAlarm alarm[] = new SerializableEmsAlarm[20]; CAT.info("Finished adding a record"); String[] s = new String[1]; String[] y = new String[1]; s[0] = new String("seqNumber>=1000"); y[0] = new String("seqNumber desc"); String t = new String("Or"); SerializableEmsAlarm[] alarm = ac.queryAlarms(s,y,t); alarm = ac.queryAlarms(s,y,t); System.out.println("array length = "+alarm.length); for(int i =0; i < alarm.length;i++){ CAT.info("\n\n\n result of time alarm"+alarm[i].eventTime); CAT.info("\n\n\n result of time alarm"+alarm[i].seqNumber); System.out.println("\n\n our result" +ac.queryAlarms(s,y,t)); System.out.println("\n\n our result" + ac.getSequenceNumber()); CAT.info("Populating an array of "); } CAT.info("Populating an array of DDDDD "); usage(" There was an exception while creating and using the DAtaB"); }catch (Exception e) { //CAT.info("Populating an array of dfgfjifjdfjgf"); usage(" There was an exception while creating and using the DAtaB"); CAT.info("There was an exception while creating and using the DAtaBasE."); CAT.info("This indicates that there was a problem communicating with " + "the server: "+e); } System.out.println("\nEnd containerManaged.Client...\n"); } private DatabaseLog createDatabaseLog() throws CreateException, RemoteException{ log ("Creating DatabasELog "); DatabaseLog ac = (DatabaseLog)PortableRemoteObject.narrow( home.create(),DatabaseLog.class); System.out.println("Here"); int seqNumber =777777; short managedObjectClass = 2; long eventTime = 1; long receivedTime = 1; short perceivedSeverity = 1; short probableCause = 1; short alarmState = 1; int dummySpecificProblems[] ={1,1,1}; String dummyMonitoredAttributes[] = {"a","a","a","a","a","a"}; String dummyAdditionalInfo[] = { "a","a","a"}; String dummySourceIdentifier = "zz"; String dummyObjectIdentifier ="ab"; SerializableMOInstance mo =new SerializableMOInstance(dummySourceIdentifier, dummyObjectIdentifier); System.out.println("Here2"); SerializableEmsAlarm ems= new SerializableEmsAlarm( seqNumber, managedObjectClass, mo, eventTime, receivedTime, perceivedSeverity, probableCause, alarmState, dummySpecificProblems, dummyMonitoredAttributes, dummyAdditionalInfo); ac.addRecord(ems); return ac; } /** * Look up the bean's home interface using JNDI. */ private DatabaseLogHome lookupHome() throws NamingException{ Context ctx = getInitialContext(); try { System.out.println("inside the lookuphome function"); home = (DatabaseLogHome) ctx.lookup("DatabaseLogHome"); return home; } catch (NamingException ne) { log("The client was unable to lookup the EJBHome. Please make sure " + "that you have deployed the ejb with the JNDI name " + "DatabaseLogHome on the WebLogic server at "+url); log("Print the message" + ne.getMessage()); throw ne; } } /** * Get an initial context into the JNDI tree. * * Java2 clients can use the jndi.properties file to set the * INITIAL_CONTEXT_FACTORY and the PROVIDER_URL * Using a Properties object will work on JDK 1.1.x and Java2 * clients */ private Context getInitialContext() throws NamingException { try { // Get an InitialContext Properties h = new Properties(); h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); h.put(Context.PROVIDER_URL, url); return new InitialContext(h); } catch (NamingException ne) { log("We were unable to get a connection to the WebLogic server at "+url); log("Please make sure that the server is running."); throw ne; } } static void usage(String errMsg) { System.err.println(errMsg); System.err.println("\nUsage: java org.apache.log4j.examples.Mind " + "configFile ARRAY_SIZE\n"+ "where configFile is a configuration file\n"+ " ARRAY_SIZE is a positive integer.\n"); System.exit(1); } static void init(String configFile) { PropertyConfigurator.configure(configFile); } private static void log(String s) { System.out.println(s); } } and Bean is import java.io.PrintWriter; import java.io.Serializable; import java.io.StringWriter; import java.rmi.RemoteException; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.util.Enumeration; import java.util.Vector; import java.util.StringTokenizer; import javax.ejb.CreateException; import javax.ejb.DuplicateKeyException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import javax.ejb.FinderException; import javax.ejb.NoSuchEntityException; import javax.ejb.ObjectNotFoundException; import javax.ejb.RemoveException; import javax.naming.InitialContext; import javax.naming.Context; import javax.naming.NamingException; import javax.sql.DataSource; //import javax.sql.*; //mport java.sql.*; import com.mindtree.emsFramework.common.DBException; import com.mindtree.emsFramework.common.SerializableMOInstance; import com.mindtree.emsFramework.common.SerializableEmsAlarm; // this is for log4j import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.Category; import org.apache.log4j.Priority; import org.apache.log4j.BasicConfigurator; /** * DatabaseLogBean is an Stateless SessionBean. *This bean illustrates: * <ul> * <li> No persistence of state between calls to the Session Bean * <li> Looking up values from the Environment * </ul> * @version: 1.1 24 April 2001 * @author : Sobhanadri S Vezzu and Harish Muleva */ public class DatabaseLogBean implements SessionBean { final static boolean VERBOSE = true; private SessionContext ctx; private String tableName=null; private String demoPool=null; // private String config="sort5.lcf"; Category CAT = Category.getInstance(DatabaseLogBean.class.getName()); //BasicConfigurator.configure(); //DatabaseLogBean.init(config); /** * This method corresponds to the create method in the home interface * "DatabaseLogHome.java". * When the client calls * <code>DatabaseLogHome.create()</code>, * the container allocates an instance of * the EJBean and calls <code>ejbCreate()</code>. * * @exception javax.ejb.CreateException if there is * a communications or systems failure */ public void ejbCreate() { try { InitialContext ic = new InitialContext(); tableName = (String)ic.lookup("java:/comp/env/tableName"); demoPool = (String)ic.lookup("java:/comp/env/demoPool"); // DatabaseLogBean.init(config); // BasicConfigurator.configure(); } catch (NamingException ne) { // CAT.info("NamingException" + ne); ne.printStackTrace(); } } /** * This method is required by the EJB Specification, * but is not used by this module. * */ public void ejbRemove(){} /** * This method is required by the EJB Specification, * but is not used by this module. * */ public void ejbActivate(){} /** * This method is required by the EJB Specification, * but is not used by this module. * */ public void ejbPassivate(){} /** /** * Sets the session context. * * @param ctx SessionContext Context for session */ public void setSessionContext(SessionContext ctx){ this.ctx= ctx; } // Application defined methods public void addRecord(SerializableEmsAlarm alarm) throws RemoteException{ if (alarm == null){ return; } //DatabaseLogBean.init(config); CAT.info("IN THE DEBUGE"); InitialContext initCtx = null; Connection con = null; try{ initCtx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup(demoPool); con=ds.getConnection(); PreparedStatement ps = con.prepareStatement( "INSERT INTO " + tableName + " (SEQNUMBER,"+ " MANAGEDOBJECTCLASS," + "SOURCEIDENTIFIER," + "OBJECTIDENTIFIER," + "EVENTTIME,RECEIVEDTIME," + "PERCEIVEDSEVERITY," + "PROBABLECAUSE," + "ALARMSTATE," + "SPECIFICPROBLEMS1," + "SPECIFICPROBLEMS2," + "SPECIFICPROBLEMS3," + "MONITOREDATTRIBUTES1," + "MONITOREDATTRIBUTES2," + "MONITOREDATTRIBUTES3," + "MONITOREDATTRIBUTES4," + "MONITOREDATTRIBUTES5," + "MONITOREDATTRIBUTES6," + "ADDITIONALINFO1," + "ADDITIONALINFO2," + "ADDITIONALINFO3)" + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setInt(1,alarm.seqNumber); ps.setInt(2,alarm.managedObjectClass); if (alarm.managedObjectInstance.sourceIdentifier == null){ ps.setString(3,null); } else{ ps.setString(3,alarm.managedObjectInstance.sourceIdentifier); } if (alarm.managedObjectInstance.objectIdentifier == null){ ps.setString(4,null); } else{ ps.setString(4,alarm.managedObjectInstance.objectIdentifier); } ps.setLong(5,alarm.eventTime); ps.setLong(6,alarm.receivedTime); ps.setInt(7,alarm.perceivedSeverity); ps.setInt(8,alarm.probableCause); ps.setInt(9,alarm.alarmState); int i = 0; for (i = 0; i < alarm.specificProblems.length; i++){ ps.setInt(10 + i,alarm.specificProblems[i]); } for (i = alarm.specificProblems.length; i < 3; i++){ ps.setInt(10 + i,0); } for (i = 0; i < alarm.monitoredAttributes.length; i++){ if (alarm.monitoredAttributes[i] == null){ ps.setString(13 + i,null); } else{ ps.setString(13 + i,alarm.monitoredAttributes[i]); } } for (i = alarm.monitoredAttributes.length; i < 6; i++){ ps.setString(13 + i,null); } for (i = 0; i < alarm.additionalInfo.length; i++){ if (alarm.additionalInfo[i] == null){ ps.setString(19 + i,null); } else{ ps.setString(19 + i,alarm.additionalInfo[i]); } } for (i = alarm.additionalInfo.length; i < 3; i++){ ps.setString(19 + i,null); } i = ps.executeUpdate(); if ( i == 0){ } con.close(); }catch(SQLException e){ e.printStackTrace(); }catch(NamingException e){ CAT.info("here \t " + e); e.printStackTrace(); } } public SerializableEmsAlarm[] queryAlarms( String[] queryCriteria, String[] sortCriteria, String indicate_ANDorOR) throws DBException{ //DatabaseLogBean.init(config); CAT.info("IN THE QUERY"); InitialContext initCtx = null; String tableName="currentAlarmLog"; SerializableEmsAlarm[] alarmsToReturn = null; Vector alarmsToReturn_vector = null; Connection con = null; try{ initCtx = new InitialContext(); usage(" INITIAL CONTAXT"); DataSource ds = (DataSource)initCtx.lookup(demoPool); con=ds.getConnection(); Statement s = con.createStatement(); CAT.info(" INITIAL CONTAXT1"); usage(" INITIAL CONTAXT"); // First get a ref for the Statement object. s = null; ResultSet result = null; StringBuffer queryString = new StringBuffer(500); // Form the SQL query string queryString.append("SELECT * FROM " + tableName + " WHERE "); // Form all the conditional criteria for(int index=0; index<queryCriteria.length; index++) { if(index == queryCriteria.length-1) { queryString.append(queryCriteria[index] ); } else { queryString.append(queryCriteria[index] + " " + indicate_ANDorOR + " "); } } // Add the sort criteria to the string. for(int index=0; index<sortCriteria.length; index++) { if(index==0) { queryString.append(" ORDER BY "); } queryString.append( sortCriteria[index] ); if(index != sortCriteria.length-1) { queryString.append(","); } } try { s = con.createStatement(); CAT.info("Hay create problem"); result = s.executeQuery(queryString.toString()); // The existing jdbc driver does not support //scrollable result sets. So have to go the ugly way of // allocating a vector and then copying into a array. alarmsToReturn_vector = new Vector(20,10); while(result.next()) { SerializableEmsAlarm currentRowAlarm = new SerializableEmsAlarm(); SerializableMOInstance managedObjectInstance = new SerializableMOInstance(); // Now fill up all the Alarm fields before inserting // it into the Array. currentRowAlarm.seqNumber = result.getInt("seqNumber"); currentRowAlarm.managedObjectClass = result.getShort("managedObjectClass"); currentRowAlarm.managedObjectInstance = new SerializableMOInstance( result.getString("sourceIdentifier"), result.getString("objectIdentifier")); currentRowAlarm.eventTime = result.getLong("eventTime"); currentRowAlarm.receivedTime = result.getLong("receivedTime"); currentRowAlarm.perceivedSeverity = result.getShort("perceivedSeverity"); currentRowAlarm.probableCause = result.getShort("probableCause"); currentRowAlarm.alarmState = result.getShort("alarmState"); CAT.info("Resuls are desplays"); // Fill up the Array members now. int[] specificProblems = new int[3]; specificProblems[0]= result.getInt("specificProblems1"); specificProblems[1]= result.getInt("specificProblems2"); specificProblems[2]= result.getInt("specificProblems3"); currentRowAlarm.specificProblems = specificProblems; // Fill up the monitoredAttributes field. String[] monitoredAttributes = new String[6]; monitoredAttributes[0]= result.getString("monitoredAttributes1"); monitoredAttributes[1]= result.getString("monitoredAttributes2"); monitoredAttributes[2]= result.getString("monitoredAttributes3"); monitoredAttributes[3]= result.getString("monitoredAttributes4"); monitoredAttributes[4]= result.getString("monitoredAttributes5"); monitoredAttributes[5]= result.getString("monitoredAttributes6"); currentRowAlarm.monitoredAttributes = monitoredAttributes; // Fill up the additional info field. String[] additionalInfo = new String[3]; additionalInfo[0]= result.getString("additionalInfo1"); additionalInfo[1]= result.getString("additionalInfo2"); additionalInfo[2]= result.getString("additionalInfo3"); currentRowAlarm.additionalInfo = additionalInfo; alarmsToReturn_vector.add(currentRowAlarm); } } catch(SQLException e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); throw new DBException(-1, "SQLException in AlarmLog in queryAlarms(). " + e.getMessage(),sw.toString()); } int noOfAlarms = alarmsToReturn_vector.size(); alarmsToReturn = new SerializableEmsAlarm[noOfAlarms]; for(int i=0; i<noOfAlarms; i++) { alarmsToReturn[i] = (SerializableEmsAlarm)alarmsToReturn_vector.get(i); } //close connection con.close(); }catch(SQLException sq){ } catch(NamingException ne) { CAT.info("Error closing context: " + ne); usage("Error closing context: " + ne); log("Error closing context: " + ne); } finally { try { if(initCtx != null) initCtx.close(); if(con!= null) con.close(); }catch(NamingException ne) { log("Error closing context: " + ne); throw new EJBException(ne); }catch(SQLException sq){ } } return alarmsToReturn; } public long getSequenceNumber() throws DBException{ //DatabaseLogBean.init(config); InitialContext initCtx = null; Connection con = null; long nextseqnum = 0; try{ initCtx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup(demoPool); con=ds.getConnection(); Statement s = con.createStatement(); ResultSet result = null; // Form the SQL query string String sqlquery = new String( "SELECT max(seqNumber) FROM " + tableName); result = s.executeQuery(sqlquery); while (result.next()){ nextseqnum = result.getLong(1); } con.close(); }catch(SQLException e){ e.printStackTrace(); }catch(NamingException e) { e.printStackTrace(); } finally { try { if(initCtx != null) initCtx.close(); if(con!= null) con.close(); }catch(NamingException e) { e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } } return (nextseqnum + 1); } //print string private void log(String s) { if (VERBOSE) System.out.println(s); } static void usage(String errMsg) { System.err.println(errMsg); System.err.println("\nUsage: java org.apache.log4j.examples.Mind " + "configFile ARRAY_SIZE\n"+ "where configFile is a configuration file\n"+ " ARRAY_SIZE is a positive integer.\n"); System.exit(1); } static void init(String configFile) { PropertyConfigurator.configure(configFile); } } thanx Harish