我有一个j2ee的网上运行的应用弹簧的框架和使用log4j进行记录。我有个线在我的log4j.性文件。这将插入日志在我的数据库。我怎么设置一个动态值的信息的一部分,以便我能以某种方式追加的目前登录的用户。Bean对象包含的信息目前的用户是在应用下文。

log4j.存放器.dbLog.sql=插入 记录(log_date,log_level, 位置,信息)的价值观 ('%d{年/月/日HH:mm:ss}','%-5p', '%的C-%L','%m')

有帮助吗?

解决方案

我在“应用程序上下文”与我的“用户信息”,但我的web应用程序的位置并不完全一定是使用Struts和log4j的,我也有类似的(但也许更简单)的要求,我的代码解决了它像这样:

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
}

}

然后在我的log4j的属性文件中我有过这样的条目:

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

,然后将结果是,我的我的表行会有这样的数据:

'2010-03-15 21:49:46514', 'MySQL的', 'DEBUG', '用户:·本注销'

我希望这有助于

其他提示

你想要使用 MDC (映射诊断上下文)。这里有一个 链接 关于使用它与servlet.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top