Pergunta

Eu tenho um aplicativo da Web J2EE em execução no Spring Framework e usando log4j para log. Eu tenho essa linha no meu arquivo log4j.properties. Isso inserirá os logs no meu banco de dados. Como defino um valor dinâmico na parte da mensagem para que eu possa anexar o usuário atualmente conectado. O objeto Bean contendo informações para o usuário atual está no contexto do aplicativo.

log4j.appender.dblog.sql = inserir no logging (log_date, log_level, localização, mensagem) valores ('%d {yyyy/mm/dd hh: mm: ss}', '%-5p', '%c-% L ','%m ')

Foi útil?

Solução

Não tenho certeza totalmente do "contexto do aplicativo" versus a localização das minhas "informações do usuário", mas meu aplicativo da web estava usando struts e log4j e eu tinha um requisito semelhante (mas talvez mais simples), resolvi com código como este:

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 então, no meu arquivo de propriedades log4j, tive uma 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

E então o resultado foi que minha linha da minha mesa teria dados assim:

'2010-03-15 21: 49: 46,514', 'MySQL', 'Debug', 'Usuário: Ben efetuado'

Eu espero que isso ajude

Outras dicas

Você quer usar o MDC (Contexto diagnóstico mapeado). Aqui está um link sobre usá -lo com servlets.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top