Domanda

ho un'applicazione web j2ee in esecuzione sul framework Spring e utilizzo log4j per la registrazione.Ho questa riga nel mio file log4j.properties.questo inserirà i log nel mio database.Come posso impostare un valore dinamico nella parte del messaggio in modo da poter in qualche modo aggiungere l'utente attualmente connesso.L'oggetto bean contenente informazioni per l'utente corrente si trova nel contesto dell'applicazione.

log4j.appender.dblog.sql = insert in logging (log_date, log_level, posizione, messaggio) valori ('%d {yyyy/mm/dd hh: mm: ss}', '%-5p', '%c-% L ','%m ')

È stato utile?

Soluzione

Non sono del tutto sicuro del "contesto dell'applicazione" rispetto alla posizione delle mie "informazioni utente", ma la mia app Web utilizzava Struts e log4j e avevo un requisito simile (ma forse più semplice), l'ho risolto con un codice come questo:

public class LogoutAction extends org.apache.struts.action.Action {

private Log log_db = LogFactory.getLog("mysql");

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    log_db.debug("User: "+request.getRemoteUser()+" logged off");
    request.getSession().invalidate();
    your
}

}

E poi nel mio file delle proprietà log4j avevo una voce come questa:

log4j.logger.mysql=DEBUG, mysql
log4j.appender.mysql=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.mysql.layout=org.apache.log4j.PatternLayout
log4j.appender.mysql.URL=jdbc:mysql://localhost:3306/dbname?autoReconnect=true
log4j.appender.mysql.driver=com.mysql.jdbc.Driver
log4j.appender.mysql.user=user
log4j.appender.mysql.password=password
log4j.appender.mysql.sql=INSERT INTO log (Date, Logger, Priority, Message) VALUES ("%d","%c","%p","%m")
enter code here

E quindi il risultato è stato che la riga della mia tabella avrebbe dati come questi:

'2010-03-15 21:49:46,514', 'mysql', 'DEBUG', 'Utente:mi sono disconnesso'

Spero che aiuti

Altri suggerimenti

Si desidera utilizzare il MDC (contesto diagnostico mappato). Ecco un link sull'utilizzo con servlet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top