Pregunta

Tengo una aplicación web J2EE que se ejecuta en el marco de primavera y usar log4j para el registro. Tengo esta línea en mi archivo log4j.properties. esto va a insertar los registros en mi base de datos. ¿Cómo se configura un valor dinámico en la parte del mensaje para que de alguna manera yo puedo añadir el usuario actualmente conectado. La información objeto de bean que contiene para el usuario actual está en el contexto de aplicación.

  

log4j.appender.dbLog.sql = INSERT INTO   TALA (log_date, log_level,   ubicación, mensaje) VALUES   ( '% D {aaaa / MM / dd HH: mm: ss}', '% -5p',   '% C-% L', '% m')

¿Fue útil?

Solución

No estoy del todo seguro sobre el "contexto de aplicación" contra la ubicación de mi "información de usuario" pero mi aplicación web se utiliza puntales y log4j y tuve un requisito similar (pero tal vez más simple), lo resolví con el código de de esta manera:

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
}

}

Y luego en presentar mis propiedades log4j que tenía una entrada como esta:

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

Y a continuación, el resultado fue que mi mi fila de la tabla tendría datos como estos:

'2010-03-15 21: 49: 46,514', 'mysql', 'debug', 'Usuario: Ben cerró la sesión'

Espero que esto ayude

Otros consejos

Se desea utilizar el MDC (contexto de diagnóstico mapeadas). He aquí una enlace sobre el uso con servlets.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top