Question

i ai une application Web J2EE en cours d'exécution sur le cadre de ressort et en utilisant log4j pour l'enregistrement. J'ai cette ligne dans mon fichier log4j.properties. ce insérera les journaux dans ma base de données. Comment puis-je définir une valeur dynamique dans la partie du message afin que je puisse en quelque sorte ajouter l'utilisateur actuellement connecté. L'objet de haricot contenant les informations pour l'utilisateur actuel est dans le contexte de l'application.

  

log4j.appender.dbLog.sql = INSERT INTO   CONNECTER (log_date, log_level,   emplacement, message) VALEURS   ( '% D {jj / mm / aaaa hh: mm: ss}', '% -5p',   '% C% L', '% m')

Était-ce utile?

La solution

Je ne suis pas tout à fait certain sur le « contexte d'application » vs l'emplacement de mon « informations utilisateur », mais mon application Web utilisait Struts et log4j et moi avons eu une exigence similaire (mais peut-être plus simple), je l'ai résolu avec le code comme ceci:

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
}

}

Et puis dans mon fichier propriétés log4j j'avais une entrée comme ceci:

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

Et le résultat était que ma ma ligne de table disposerions de données comme ceci:

'2010-03-15 21: 49: 46514', 'mysql', 'DEBUG', 'utilisateur: ben déconnecté'

J'espère que cette aide

Autres conseils

Vous voulez utiliser le MDC (contexte de diagnostic mappée). Voici un sur l'utilisation avec servlets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top