2012-10-31 10 views
7

Ho sviluppato un'applicazione web in cui posso registrare un dipendente.Come configurare il percorso del file di output log4j in web.xml e log4j.properties?

mio web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 

    <display-name>Employee Registration</display-name> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>sapient</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>sapient</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

</web-app> 

Ora, quando clicco su un pulsante Register nella mia pagina html. Si va a una classe controller dove ho scritto un codice per la registrazione,

@org.springframework.stereotype.Controller 
public class RegController { 
    private static final Logger LOGGER = Logger 
      .getLogger(RegController.class.getName()); 


@RequestMapping(value = "/register.htm", method = RequestMethod.GET) 
public ModelAndView handleRequest(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    LOGGER.debug("ENTERING the contoller class"); 
    ModelAndView mav = new ModelAndView("register"); 
    LOGGER.debug("exiting the contoller class"); 
    return mav; 

} 

}

ho creato un pacchetto chiamato resource e ho creato un file log4j.properties in

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\loging.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

Ma i miei registri non sono creati nell'unità C:.

Devo configurare qualcosa in web.xml? Ho già incluso il file log4j.jar.

+0

fare riferimento a questo link http: //www.mkyong.com/spring-mvc/spring-mvc-log4j-integration-example/ – Swarne27

risposta

2

La tua domanda non ha nulla a che fare con Spring MVC. È semplicemente un problema di configurazione di Log4J. (Modifica la tua domanda)

Hai configurato il logger correttamente? (Ad esempio, per consentire il livello di debug, e impostare il file appender al logger)

avere qualcosa di simile nella configurazione (ho appena ricordo la sintassi dalla memoria, risolvere da soli se c'è qualcosa di sbagliato)

log4j.rootLogger.level=INFO, file 
log4j.logger.your.package.RegController=DEBUG 

qualcosa del genere.

Inoltre, assicurarsi di non avere altri log4j.properties o log4j.xml in classpath. Log4J probabilmente li caricherà invece dei tuoi, cosa che ha causato il problema.

+0

qualcosa fuori tema: suggerirò fortemente OP di adottare SLF4J. È comunque possibile utilizzare Log4J come back-end per la registrazione, ma facilita la configurazione ed è possibile modificare il back-end di registrazione in futuro –

7

È necessario comprendere:

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/resource/log4j.properties</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

nel vostro web.xml. allora funzionerà bene.

+0

e in/WEB-INF/resource/aggiungere il file log4j.properties con questo codice '# Root opzione logger log4j.rootLogger = DEBUG, file di # messaggi di log reindirizzare a un file di log log4j.appender.file = org.apache.log4j.RollingFileAppender #outputs a Tomcat casa log4j.appender.file.File = $ {} catalina.home /logs/myapp.log log4j.appender.file.MaxFileSize = 5MB log4j.appender.file.MaxBackupIndex = 10 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j. appender.file.layout.ConversionPattern =% d {aaaa-MM-gg HH: mm: ss}% -5p% c {1}:% L -% m% n' –

+0

Funziona come un incantesimo. Grazie –

1

Includere il seguente file log4j.properties nella cartella delle risorse.

log4j.rootCategory=INFO,S,rollingFile 

log4j.appender.S =org.apache.log4j.ConsoleAppender 
log4j.appender.S.layout =org.apache.log4j.PatternLayout 
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

log4j.appender.rollingFile = org.apache.log4j.DailyRollingFileAppender 

#provide path to your location where you want logs created. For now its logs folder of tomcat. 
log4j.appender.rollingFile.File = ${catalina.home}/logs/loging.log 
log4j.appender.rollingFile.Append = true 
log4j.appender.rollingFile.MaxFileSize=2000KB 
log4j.appender.rollingFile.MaxBackupIndex=9 

log4j.appender.rollingFile.Threshold = ALL 

log4j.appender.rollingFile.DatePattern = '.'yyy-MM-dd 
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout 
log4j.appender.rollingFile.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

Sostituisci il codice con questo. Sicuramente funzionerà bene.

0

nel vostro web.xml aggiungere questo codice

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/resource/log4j.properties</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

e sotto l'/ WEB-INF/risorse/aggiungere i log4j.properties file con questo codice

# Root logger option 
    log4j.rootLogger=DEBUG, file # Redirect log messages to a log file 
    log4j.appender.file=org.apache.log4j.RollingFileAppender #outputs to 
    Tomcat home log4j.appender.file.File=${catalina.home}/logs/myapp.log 
    log4j.appender.file.MaxFileSize=5MB 
    log4j.appender.file.MaxBackupIndex=10 
    log4j.appender.file.layout=org.apache.log4j.PatternLayout 
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} 
    %-5p %c{1}:%L - %m%n 

e nella vostra classe add questo codice

private static final Logger logger = Logger.getLogger(NameOfYourrClass.class); 

e all'interno della vostra funzione aggiungere questo codice

logger.debug("This is Error message", new Exception("Testing")); 
Problemi correlati