dcsimg
Class cast problem in Log4j
1 posts in topic
Flat View  Flat View
TOPIC ACTIONS:
 

Posted By:   Manu_Gupta
Posted On:   Thursday, June 19, 2008 12:52 PM

Error in Log4j program I was trying to run a sample log4j program and I am getting this problem at runtime. java.lang.ClassCastException: org.apache.commons.logging.impl.Log4JLogger cannot be cast to org.apache.commons.logging.impl.Jdk14Logger at line 17. I had set all path and class path properly The code is import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.impl.*; public class LogGenerator { // Note that you pass in an instance of this class to the // log generator. This automatically binds this class to // generated messages. priva   More>>

Error in Log4j program



I was trying to run a sample log4j program and I am getting this problem at runtime.

java.lang.ClassCastException: org.apache.commons.logging.impl.Log4JLogger cannot be cast to org.apache.commons.logging.impl.Jdk14Logger
at line 17.


I had set all path and class path properly

The code is

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.commons.logging.impl.*;

public class LogGenerator
{
// Note that you pass in an instance of this class to the
// log generator. This automatically binds this class to
// generated messages.
private static Log log = LogFactory.getLog(LogGenerator.class);

public static void configJDKLogger()
{
try
{
((Jdk14Logger)log).getLogger().setLevel(
java.util.logging.Level.ALL);

((Jdk14Logger)log).getLogger().addHandler(
(java.util.logging.FileHandler)Class
.forName("java.util.logging.FileHandler")
.newInstance());

System.out.println("Added JDK 1.4 file handler");
} catch (Exception e)
{
System.out.println("Unable to load JDK 1.4 logging.");
e.printStackTrace();
}
}

public static void main(String[] args)
{

configJDKLogger();
System.setErr(System.out);

System.out.println();
System.out.println("Test fatal log");

try
{
String foo = null;
int x = 0 / (new Integer(foo)).intValue();
} catch (Exception e)
{
log.fatal(e.getMessage(), e);
}

System.out.println();
System.out.println("Test error log");

try
{
Object foo = null;
foo.toString();
} catch (Exception e)
{
log.error(e.getMessage(), e);
}

System.out.println();
System.out.println("Test warn log");

try
{
Class.forName("com.cascadetg.NonexistantClass");
} catch (Exception e)
{
log.warn("Can't find a non-existant class!");
}

System.out.println();
System.out.println("Test info log");

log.info("Starting app!");
log.info("Quitting app!");

System.out.println();
System.out.println("Test debug log");

if (1 > 2)
{
log.debug("1 > 2 evaluated true");
if (10 % 2 == 0)
log.debug("10 % 2 is 0");
else
log.debug("10 % 2 is not 0");
} else
{
log.debug("1 > 2 evaluated false");
}

System.out.println();
System.out.println("Test trace log");

log.trace("Calling trace method.");
log.trace("Calling trace method.");
log.trace("Calling trace method.");
log.trace("Calling trace method.");
log.trace("Calling trace method.");

System.out.println();
System.out.println("Log test complete.");

}
}

   <<Less

Re: Class cast problem in Log4j

Posted By:   Anonymous  
Posted On:   Thursday, June 19, 2008 01:28 PM

You might be having the log4j jar in your class path.
Commons LogFactory will check for the Logger implementations.
Since it found Log4JLogger it will return the type of Log4j which you are casting to Jdk logger

Solution:
1) Remove the log4j jar from your class path

or

2)User common-logging.propertis file in the root class directory/class path with content

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
About | Sitemap | Contact