XesperantoX
Mitglied
Hallo,
ich habe ein Problem beim loggen von Meldungen in einer Struts Applikation.
Die WebApp wird auf einem Tomcat 5.5. deployed und ich habe heute versucht Log4j einzubinden.
Ich habe ein seperates Servlet geschrieben was die Properties-File einlesen soll und versuche nun zum testen in einer anderen Struts-Action Logs auszugeben, aber beim Remote-Debugging über Eclipse Europa bekomme ich weder Ausgaben in der Konsole, noch wird in das Log-File geschrieben.
Der Code des Properties-Files (log4j.properties)
Servlet-Declaration in der web.xml
Das Servelt zur Initialisierung
und die Action in der zum ersten Mal etwas geloggt werden sollte:
Die Jar-Datei von log4j liegt im Classpath der Anwendung und das Properties-File liegt im Classes-Ordner innerhalb von WEB-INF. In dem Classes Ordner liegen keine weiteren Dateien, da alles in ein Jar-Archiv gepackt wird und im lib-Verzeichniss der Anwendung liegt.
Bin über jeden Ratschlag dankbar! Hab auch gelesen das man log4j debuggen kann, aber leider bisher nichts detailiertes dazu gefunden.
Viele Grüße
Sascha
PS: bei "xxx" steht normalerweise der Firmenname dies wurde von mir nur hier im Code ausgetauscht.
ich habe ein Problem beim loggen von Meldungen in einer Struts Applikation.
Die WebApp wird auf einem Tomcat 5.5. deployed und ich habe heute versucht Log4j einzubinden.
Ich habe ein seperates Servlet geschrieben was die Properties-File einlesen soll und versuche nun zum testen in einer anderen Struts-Action Logs auszugeben, aber beim Remote-Debugging über Eclipse Europa bekomme ich weder Ausgaben in der Konsole, noch wird in das Log-File geschrieben.
Der Code des Properties-Files (log4j.properties)
PHP:
#### Use two appenders, one to log to console, another to log to a file
log4j.rootCategory=debug, stdout, R
# Print only messages of priority WARN or higher for your category
log4j.category.your.category.name=WARN
# Specifically inherit the priority level
#log4j.category.your.category.name=INHERITED
#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#### Second appender writes to a file
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Servlet-Declaration in der web.xml
PHP:
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>de.xxx.quali.xxxLog4JInit</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>
WEB-INF/classes/log4j.properties
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Das Servelt zur Initialisierung
PHP:
package de.xxx.quali;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class xxxLog4JInit extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(xxxLog4JInit.class.getName());
public void init(){
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j-init-file");
if(file != null){
try{
PropertyConfigurator.configure(prefix + file);
}catch(Exception e){
e.getMessage();
}
// logger.fatal("Log4j erfolgreich initialisiert.");
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res){
}
}
und die Action in der zum ersten Mal etwas geloggt werden sollte:
PHP:
package de.vatech.quali.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import de.xxx.quali.transferObjects.PapTO;
public class LoginAction extends Action{
private static Logger logger = Logger.getLogger(LoginAction.class.getName());
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception{
ActionForward forward = null;
String sprache = "de";
PapTO pap = null;
HttpSession session;
session = request.getSession();
session.setAttribute("pap", pap);
session.setAttribute("sprachen", sprache);
forward = mapping.findForward("success");
logger.info("Benutzer erfolgreich authentifiziert.");
return forward;
}
}
Die Jar-Datei von log4j liegt im Classpath der Anwendung und das Properties-File liegt im Classes-Ordner innerhalb von WEB-INF. In dem Classes Ordner liegen keine weiteren Dateien, da alles in ein Jar-Archiv gepackt wird und im lib-Verzeichniss der Anwendung liegt.
Bin über jeden Ratschlag dankbar! Hab auch gelesen das man log4j debuggen kann, aber leider bisher nichts detailiertes dazu gefunden.
Viele Grüße
Sascha
PS: bei "xxx" steht normalerweise der Firmenname dies wurde von mir nur hier im Code ausgetauscht.