Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

hey!-is there something wrong with my application on tomcat-jakarta-log4j?

843841Apr 20 2006 — edited Apr 25 2006
I just have a few questions about log4j and servlets, is it wrong my configuration? it doesn't work my logger, first i created a servlet ( SetupServlet.java) with this is the code for my application:

import java.io.File;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;
import java.sql.Driver;
import java.sql.DriverManager;

import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class SetupServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
String props = config.getInitParameter("log4j-init-file");
if(props == null || props.length() == 0 ||
!(new File(props)).isFile()) {
System.err.println(
"ERROR: No se puede leer el archivo de configuracion. " +
"Favor de verificar la ruta del parametro de la ruta de "+
"configuracion en el archivo web.xml");
throw new ServletException();
}
String watch = config.getInitParameter("watch");
System.err.println("Usando el archivo log4j.properties = " + props);
System.err.println("Watch es cambiado a : " + watch);
if(watch != null && watch.equalsIgnoreCase("true"))
PropertyConfigurator.configureAndWatch(props);
else
PropertyConfigurator.configure(props);
Logger log = Logger.getLogger(SetupServlet.class);
}

public void destroy() {
super.destroy();
}
}

then i load it in the web.xml like this:
<servlet>
<servlet-name>SetupServlet</servlet-name>
<servlet-class>SetupServlet</servlet-class>
</servlet>

and also the main application have parameters to load the log4j.properties file and i'm sure that it is in the same path where is my app, i.e. myapp/WEB-INF/classes/log4j.properties, in the same web.xml file like this:
<servlet>
<servlet-name>Validador</servlet-name>
<servlet-class>Validador</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<init-param>
<param-name>watch</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

the "log4j.properties" file contains this code:
#### Este configurador usa 2 appenders, uno para mostrar en la pantalla y otro
#### para log a un archivo
log4j.rootCategory=ALL, stdout, R

# Imprime solo mensajes de prioridad DEBUG o mas arriba de la categoria
log4j.category.Validador=DEBUG

#### Primero el appender escribe a la pantalla
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# El patron para la salida a la pantalla y numero de linea.
log4j.appender.stdout.layout.ConversionPattern=%d{DATE} - %-5p [%t] %-4r %-4l _%x_ %m\n

#- File=nomdelog.txt: Manda a un nombre de achivo los mensajes. Puedes usar
# ${alguna_clave_de_propiedad} (por ejemplo,las propiedades del sistema
# java.home o user.home) para especificar la ruta al principio. De hecho,
# todas las opciones de clave de propiedad aceptan estos tipos de valores.
# ejemplo: ${user.dir}logs/sacip.log
# log4j.appender.R=org.apache.log4j.FileAppender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=sacip.log

#- MaxFileSize=100KB: El sufijo puede ser KB, MB o GB. rola el archivo log
#a otro despues de que el tama�o se alcanza.
#- MaxBackupIndex=2: Mantiene un maximo de 2 achivos de respaldo.
#Borra el(los) antig�o(s) archivo(s). 0 significa sin archivos de respaldo.
# Controla el maximo tama�o del archivo de logs
log4j.appender.R.MaxFileSize=1MB
# Respaldos del archivo de logs
log4j.appender.R.MaxBackupIndex=1

#### Por ultimo el patron del appender que escribe al archivo
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{DATE} - %-5p [%t] %-4r %-4l _%x_ %m\n

when i run my app and a user enter, the follow is what i get from de tomcat-jakarta console:

log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [org.apache.catalina.loader.StandardClassLoader@e5855a] whereas object of type
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [WebappClassLoader delegate: false repositories: /WEB-INF/classes/----------> Parent Classloader:org.apache.catalina.loader.StandardClassLoader@908881].
log4j:ERROR Could not instantiate appender named "stdout".
log4j:ERROR A "org.apache.log4j.RollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [org.apache.catalina.loader.StandardClassLoader@e5855a] whereas object of type
log4j:ERROR "org.apache.log4j.RollingFileAppender" was loaded by [WebappClassLoader delegate: false repositories: /WEB-INF/classes/----------> Parent Classloader:org.apache.catalina.loader.StandardClassLoader@908881].
log4j:ERROR Could not instantiate appender named "R".

my path for the log4j.x.x.jar is:

LOG4J_HOME
e:\Java\jdk1.5.0_03\ext\logging-log4j-1.2.13\dist\lib

and i also put the log4j.x.x.jar yet there.

my question is: what i have to do to correct the errors, i had made examples and they work but with servlets i have problems, if anybody had tried tell me how, thanks.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 23 2006
Added on Apr 20 2006
2 comments
323 views