You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Chopra, Sumeet (Cognizant)" <CS...@cal.cognizant.com> on 2003/05/09 12:06:55 UTC

Log4j Problem

hi ,

I am doing this :

I want to log to 2 different files the log msgs.
I have a wrapper class around Log4j.
.Its like this 
******************************************************************
import java.io.*;
import java.net.*;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.Category;

public class LoggingManager
{

	private String clazzName = null;
	private String user_id = null;
	Category ReferenceCategory ;

    static
    {
		try
		{
		  String FName="D:\\bea\\user_projects\\CheckFreeDomain\\applications\\CheckFree\\log4j.xml";
          DOMConfigurator.configure(FName);
	    }
	    catch(Exception e)
	    {
			e.printStackTrace();
		}

	}
	public LoggingManager(String className)
	{
      findParentCategory(className);
      ReferenceCategory = Category.getInstance(className);
	}

  public Category findParentCategory(String CategoryName)
  {
    String l_ParentName = CategoryName ;
	int lastIndex ;
	boolean l_SearchEnd = false ;

    while (l_SearchEnd == false ) {
		if (Category.exists (l_ParentName) == null)
			//SelfLogCategory.info ("Parent DOES NOT Exist" ) ;
			System.out.println("Parent doesn't exist");
		else {
			//SelfLogCategory.info ("Parent DOES Exist" ) ;
			System.out.println("Parent does exist");
			l_SearchEnd = true ;
			return Category.getInstance (l_ParentName) ;
		}

		lastIndex = l_ParentName.lastIndexOf ( "." ) ;
		if (lastIndex != -1 ) {
			l_ParentName = l_ParentName.substring (0, lastIndex) ;
			//SelfLogCategory.info ("Next Parent ->" +l_ParentName) ;
			System.out.println("Next parent is "+l_ParentName);
		}
		else
			l_SearchEnd = true ;
	}
	return Category.getRoot() ;

  }

  public void logInfo(String InfoMessage) {
  		ReferenceCategory.info(InfoMessage);
	}
  public void logDebug(String debugMessage) {
		ReferenceCategory.debug(debugMessage);
   }
  public void logWarn(String warnMessage) {
   		ReferenceCategory.warn(warnMessage);
   }
  public void logError(String errorMessage) {
    	ReferenceCategory.warn(errorMessage);
     }
  public void logFatal(String warnMessage) {
      	ReferenceCategory.warn(warnMessage);
      }

}

********************************************************************

and my configuration file is as :

********************************************************************
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

  <log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">

	<appender name="A1" class="org.apache.log4j.FileAppender">
            <param name="File"   value="D:/bea/user_projects/CheckFreeDomain/applications/CheckFree/logs/SimpleLog.log" />
            <param name="Append" value="true" />	    	
            <layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%d{DATE} %-6r %-5p %30.30c %x - %m\n" />
            </layout>	    
	</appender>
	
	<appender name="A2" class="org.apache.log4j.FileAppender">
			<param name="File"   value="D:/bea/user_projects/CheckFreeDomain/applications/CheckFree/logs/AuditTrail.log" />
			<param name="Append" value="true" />	    	
		        <layout class="org.apache.log4j.PatternLayout">
			  <param name="ConversionPattern" value="%d{DATE} %-6r %-5p %30.30c %x - %m\n"/>
		        </layout>	    
	</appender>
	
	<category name="checkFree">
	    <priority value="debug" />
	    <appender-ref ref="A1" />
	</category>
	<category name="checkFree">
			    <priority value="debug" />
			    <appender-ref ref="A2" />
	</category>
	
	
	
	<root>
	    <!-- The following level element is not necessary since the -->
	    <!-- level of the root level is set to DEBUG by default.    -->
	    <level value ="INFO"/>
	    <appender-ref ref="A1" />
	    <appender-ref ref="A2" />
	</root>
	

  </log4j:configuration>
*******************************************************************************************

The problem is that it is logging to only one file AuditTrail.log
and not to SimpleLog.log .

it is giving me this error.

###################################################################

log4j:ERROR Attempted to append to closed appender named [A1].

###################################################################

and my logging class is :

###################################################################

public class MyAppNew
 {

        public static void main(String[] args)
        {
          System.out.println("In main method");
        }

        public void toPrint()
        {

         try
         {
          LoggingManager logManager = new LoggingManager("checkFree.MyApp");
          logManager.logInfo("Loggin info from MyAppNew");
	     }
	     catch(Exception e)
	     {
		    e.printStackTrace();
	     }
        }
 }
###################################################################


Can someone please tell me where I am going wrong ?

Thanks and Regards,
Sumeet Chopra.



Re: Log4j Problem

Posted by Amandeep Midha <Am...@itsprojects.com>.
Hi Sumeet,


First of all let me tell you that your query requires to be in Log4j User
List not in developer list.

I have seen ur xml using



<category name="checkFree">
            <priority value="debug" />
            <appender-ref ref="A1" />
        </category>
        <category name="checkFree">
                            <priority value="debug" />
                            <appender-ref ref="A2" />
        </category>





Why u require it??


I think use of following code instead of above would suffice..



        <category name="checkFree">


           <priority value="debug" />


              <appender-ref ref="A1" />
                            <appender-ref ref="A2" />
        </category>


And if in any case u want both appenders at different priority, u can very
well do it in the appender declaration tag itself ( Refer log4j.dtd)

Pls let me know whether I have answered ur question!

best regards,
Amandeep
-----------------------------------------
Amandeep Midha (CHARMIE)
IT Solutions (India) Pvt. Ltd.
No. 17, South End Road,
Basavangudi
Bangalore - 560 004. India
TEL : 91-80-6657180 EXT: 2116
CELL: +91 9886148227
FAX: 91-80-6655755
-----------------------------------------
"Never Fear Shadows ;They only mean there is a light shining somewhere
nearby ...."


                                                                                                                       
                    "Chopra, Sumeet                                                                                    
                    (Cognizant)"            To:     <lo...@jakarta.apache.org>                                     
                    <CSumeet@cal.cogn       cc:                                                                        
                    izant.com>              Subject:     Log4j Problem                                                 
                                                                                                                       
                    05/09/2003 03:36                                                                                   
                    PM                                                                                                 
                    Please respond to                                                                                  
                    "Log4J Developers                                                                                  
                    List"                                                                                              
                                                                                                                       




hi ,


I am doing this :


I want to log to 2 different files the log msgs.
I have a wrapper class around Log4j.
.Its like this
******************************************************************
import java.io.*;
import java.net.*;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.Category;


public class LoggingManager
{


        private String clazzName = null;
        private String user_id = null;
        Category ReferenceCategory ;


    static
    {
                try
                {
                  String FName="D:
\\bea\\user_projects\\CheckFreeDomain\\applications\\CheckFree\\log4j.xml";

          DOMConfigurator.configure(FName);
            }
            catch(Exception e)
            {
                        e.printStackTrace();
                }


        }
        public LoggingManager(String className)
        {
      findParentCategory(className);
      ReferenceCategory = Category.getInstance(className);
        }


  public Category findParentCategory(String CategoryName)
  {
    String l_ParentName = CategoryName ;
        int lastIndex ;
        boolean l_SearchEnd = false ;


    while (l_SearchEnd == false ) {
                if (Category.exists (l_ParentName) == null)
                        //SelfLogCategory.info ("Parent DOES NOT Exist" ) ;

                        System.out.println("Parent doesn't exist");
                else {
                        //SelfLogCategory.info ("Parent DOES Exist" ) ;
                        System.out.println("Parent does exist");
                        l_SearchEnd = true ;
                        return Category.getInstance (l_ParentName) ;
                }


                lastIndex = l_ParentName.lastIndexOf ( "." ) ;
                if (lastIndex != -1 ) {
                        l_ParentName = l_ParentName.substring (0,
lastIndex) ;
                        //SelfLogCategory.info ("Next Parent ->"
+l_ParentName) ;
                        System.out.println("Next parent is "+l_ParentName);

                }
                else
                        l_SearchEnd = true ;
        }
        return Category.getRoot() ;


  }


  public void logInfo(String InfoMessage) {
                ReferenceCategory.info(InfoMessage);
        }
  public void logDebug(String debugMessage) {
                ReferenceCategory.debug(debugMessage);
   }
  public void logWarn(String warnMessage) {
                ReferenceCategory.warn(warnMessage);
   }
  public void logError(String errorMessage) {
        ReferenceCategory.warn(errorMessage);
     }
  public void logFatal(String warnMessage) {
        ReferenceCategory.warn(warnMessage);
      }


}


********************************************************************


and my configuration file is as :


********************************************************************
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">


  <log4j:configuration debug="true" xmlns:log4j="
http://jakarta.apache.org/log4j/">


        <appender name="A1" class="org.apache.log4j.FileAppender">
            <param name="File"   value
="D:/bea/user_projects/CheckFreeDomain/applications/CheckFree/logs/SimpleLog.log"

/>


            <param name="Append" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d{DATE} %-6r %-5p
%30.30c %x - %m\n" />
            </layout>
        </appender>

        <appender name="A2" class="org.apache.log4j.FileAppender">
                        <param name="File"   value
="D:/bea/user_projects/CheckFreeDomain/applications/CheckFree/logs/AuditTrail.log"

/>


                        <param name="Append" value="true" />
                        <layout class="org.apache.log4j.PatternLayout">
                          <param name="ConversionPattern" value="%d{DATE} %
-6r %-5p %30.30c %x - %m\n"/>
                        </layout>
        </appender>

        <category name="checkFree">
            <priority value="debug" />
            <appender-ref ref="A1" />
        </category>
        <category name="checkFree">
                            <priority value="debug" />
                            <appender-ref ref="A2" />
        </category>



        <root>
            <!-- The following level element is not necessary since the -->

            <!-- level of the root level is set to DEBUG by default.    -->

            <level value ="INFO"/>
            <appender-ref ref="A1" />
            <appender-ref ref="A2" />
        </root>



  </log4j:configuration>
*******************************************************************************************



The problem is that it is logging to only one file AuditTrail.log
and not to SimpleLog.log .


it is giving me this error.


###################################################################


log4j:ERROR Attempted to append to closed appender named [A1].


###################################################################


and my logging class is :


###################################################################


public class MyAppNew
 {


        public static void main(String[] args)
        {
          System.out.println("In main method");
        }


        public void toPrint()
        {


         try
         {
          LoggingManager logManager = new LoggingManager
("checkFree.MyApp");
          logManager.logInfo("Loggin info from MyAppNew");
             }
             catch(Exception e)
             {
                    e.printStackTrace();
             }
        }
 }
###################################################################





Can someone please tell me where I am going wrong ?


Thanks and Regards,
Sumeet Chopra.


(See attached file: InterScan_SafeStamp.txt)(See attached file:
InterScan_Disclaimer.txt)
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org