Log4j 动态参数

发布于 2024-08-26 08:24:49 字数 310 浏览 15 评论 0原文

我有一个在 Spring 框架上运行的 j2ee Web 应用程序,并使用 log4j 进行日志记录。我的 log4j.properties 文件中有这一行。这会将日志插入我的数据库中。如何在消息部分设置动态值,以便我可以以某种方式附加当前登录的用户。包含当前用户信息的 bean 对象位于应用程序上下文中。

log4j.appender.dbLog.sql = 插入 日志记录(日志日期、日志级别、 位置、消息)值 ('%d{yyyy/MM/dd HH:mm:ss}', '%-5p', “%C-%L”、“%m”)

i have a j2ee web application running on spring framework and using log4j for logging. I have this line in my log4j.properties file. this will insert the logs in my database. How do I set a dynamic value in the message part so that I can somehow append the currently logged in user. The bean object containing info for the current user is in the application context.

log4j.appender.dbLog.sql = INSERT INTO
LOGGING (log_date, log_level,
location, message) VALUES
('%d{yyyy/MM/dd HH:mm:ss}', '%-5p',
'%C-%L', '%m')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

衣神在巴黎 2024-09-02 08:24:49

您想要使用 MDC< /a>(映射的诊断上下文)。这是关于使用的链接它与 servlet 一起使用。

You want to use the MDC (Mapped diagnostic context). Here's a link about using it with servlets.

幼儿园老大 2024-09-02 08:24:49

我并不完全确定“应用程序上下文”与“用户信息”的位置,但我的网络应用程序使用的是 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:46,514', 'mysql', 'DEBUG ', '用户:ben 已注销'

我希望这有帮助

I'm not entirely certain on the "application context" vs the location of my "user info" but my web app was using Struts and log4j and I had a similar (but maybe simpler) requirement, I solved it with code like this:

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
}

}

And then in my log4j properties file I had an entry like this:

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

And then the result was that my my table row would have data like this:

'2010-03-15 21:49:46,514', 'mysql', 'DEBUG', 'User: ben logged off'

I hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文