Frage

habe ich eine j2ee Web-Anwendung auf Federrahmen ausgeführt und mit log4j für die Protokollierung. Ich habe diese Zeile in meiner log4j.properties Datei. dies wird die Protokolle in der Datenbank einzufügen. Wie kann ich so einen dynamischen Wert im Nachrichtenteil festgelegt, dass ich irgendwie anhängen kann der aktuell angemeldeten Benutzers. Die Bean-Objekt enthält Informationen für den aktuellen Benutzer ist im Anwendungskontext.

  

log4j.appender.dbLog.sql = INSERT INTO   LOGGING (log_date, log_level,   Lage, Nachricht) VALUES   ( '% D {yyyy / mm / tt HH: mm: ss}', '% -5p',   '% C-% L', '% m')

War es hilfreich?

Lösung

Ich bin nicht ganz sicher auf dem „Anwendungskontext“ gegen den Rest der Position meines „user info“ aber meine Web-App wurde mit Struts und log4j und ich hatte ein ähnliches (aber vielleicht einfacher) Anforderung, ich löste es mit dem Code wie folgt aus:

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
}

}

Und dann in meiner log4j-Eigenschaftsdatei ich einen Eintrag wie folgt hatte:

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

Und dann das Ergebnis war, dass meine meine Tabellenzeilendaten wie diese haben würde:

'2010-03-15 21: 49: 46.514', 'mysql', 'DEBUG', 'User: ben abgemeldet'

Ich hoffe, das hilft

Andere Tipps

Sie möchten die MDC (Mapped diagnostischer Kontext). Hier ist ein Link über die Verwendung von es mit Servlets.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top