栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Web应用程序中记录用户活动

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Web应用程序中记录用户活动

使用Log4J内置的MDC / NDC功能实际上非常简单(SLF4J和Logback仅支持MDC)。

实施MDC过滤器

首先,实现一个Servlet过滤器,该过滤器会将用户名添加到MDC /
NDC。Logback提供了便利的MDCInsertingServletFilter,Spring框架还向存储添加了Log4jNestedDiagnosticContextFilter。查看它们,但是您将需要一个这样的自定义对象:

public class UserToMdcFilter implements javax.servlet.Filter{    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        MDC.put("user", SecurityContextHolder.getContext().getAuthentication().getPrincipal());        try { chain.doFilter(request, response);        } finally { MDC.remove("user");        }    }    //...}

将MDC值添加到您的日志记录模式

确保

web.xml
在Spring安全过滤器之后应用此过滤器。MDC功能非常出色-
如果需要,它将把保存在MDC线程本地映射中的所有值添加到每个日志记录语句中。就您而言,只需添加以下内容:

%X{user}

到您的日志记录模式。

不干扰日志记录方法的参数/值

记录方法的名称,参数和返回值由您决定(用户名将自动添加),但是有一些优雅的方法可以完全删除样板记录代码。试试这个Spring内置方面:

<bean id="customizableTraceInterceptor" >    <property name="enterMessage" value="Entering $[methodName]($[arguments])"/>    <property name="exitMessage" value="Leaving $[methodName](): $[returnValue]"/></bean><aop:config>    <aop:advisor advice-ref="customizableTraceInterceptor" pointcut="execution(public * BankAccountServlet.*(..))"/></aop:config>

最后的想法

  • 查看此线程:http : //forum.springsource.org/showthread.php?88890-MDC-Log4j-Filter-with-Spring-Security-3.0.2
  • 考虑将Logback用作日志记录库,并坚持使用SLF4J API。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号