Tomcat6 - 如何通过 log4j 或 JULI 获取 session 参数?

标签 tomcat logging log4j

我遇到这样一个问题:已部署的 Web 应用程序(没有源代码或任何引用)似乎在某些 session 参数方面存在问题。我不知道如何对该应用程序进行逆向工程,所以我觉得我可以显示此事件的唯一方法是使用 log4j 或 tomcat 自己的 JULI 工具来获取 session 参数列表。我读过 Wrox 的 Professional Apache Tomcat 6,坦率地说,它在这方面帮助不大...

关于使用 log4j 或 JULI 的方向有什么提示吗?

非常感谢。

最佳答案

您可以添加一个过滤器来将 session 属性列表打印到 Log4J,如下所示:

public class SessionAttributesLoggingFilter implements Filter {

    private Logger log = Logger.getLogger(this.getClass());

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpSession session = httpRequest.getSession();

            Enumeration<String> sessionAttributeNames = session.getAttributeNames();
            log.info("Session attributes before request ----------------------->");
            while (sessionAttributeNames.hasMoreElements()) {
                String attr = sessionAttributeNames.nextElement();
                log.info(" "+attr + " = " + session.getAttribute(attr));
            }
            chain.doFilter(request, response);
            sessionAttributeNames = session.getAttributeNames();
            log.info("Session attributes after request ----------------------->");
            while (sessionAttributeNames.hasMoreElements()) {
                String attr = sessionAttributeNames.nextElement();
                log.info(" "+attr + " = " + session.getAttribute(attr));
            }
        } else {
            chain.doFilter(request, response);
        }
    }

    public void init(FilterConfig arg0) throws ServletException {
        log.info("Logging session attributes ...");
    }

    public void destroy() {}
} 

然后将映射添加到您的 web.xml 并重新启动您的应用:

<filter>
    <filter-name>sessionLogging</filter-name>
    <filter-class>PACKAGENAME.SessionAttributesLoggingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>sessionLogging</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

关于Tomcat6 - 如何通过 log4j 或 JULI 获取 session 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939769/

相关文章:

http - Tomcat:响应http POST请求的Websocket广播

log4j:错误到错误文件

mysql - Kontakt ibeacon 的 RSSI 统计设置为 Eddystone 格式

java - 我是否可以控制 jsvc stderr 输出中显示的 java 日志的日志格式?

c - 有C的任何日志库吗? (如C的log4j)

c# - 网络服务跟踪/日志

java - 写入太多日志会导致 OutOfMemory 错误吗?

java - Log4j dailyrollingfileappender 文件问题

java - 如何在我自己的 Apache tomcat 服务器系统上部署 Java/Spring 应用程序?

jsf - 如何在Tomcat上安装和使用CDI?