gpt4 book ai didi

tomcat - 在 Tomcat 上运行时如何从存储在 httpsession 上的 map 中获取值

转载 作者:行者123 更新时间:2023-11-28 23:05:10 26 4
gpt4 key购买 nike

使用 Tomcat,可以通过配置适当的阀将一堆有趣的信息转储到日志文件中。

例如:

       <Valve className="org.apache.catalina.valves.AccessLogValve" 
directory="logs"
prefix="localhost."
suffix=".txt"
pattern='%s %b %I %{myname}s'
resolveHosts="false"/>

意思是:

  • %s - 输出响应的 HTTP 状态码
  • %b - 发送的输出字节数,不包括 HTTP header ,如果为零则为“-”
  • %I - threadId

和 %{myname}s 表示输出存储在 session 中的属性 myname 的值。

一切顺利。如果我在我的 session 中存储了一个 HashMap ,我可以通过执行以下操作来输出:

%{mymap}s

参见 http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html了解更多信息。

但是,我只想输出特定键的值,而不是整个 map 。我试过:

%{mymap.myatt}s

但这行不通。任何想法如何做到这一点?

最佳答案

在源代码中查找 AccessLogValve ,搜索字符串 SessionAttributeElement。这是将您的 %{mymap}s 转换为字符串的值所做的事情,看起来您无法深入了解 map 。

您可以扩展此类并覆盖 createAccessLogElement 方法,为不同的模式添加另一个处理程序(比方说 %{mymap.myatt}m),然后以与 SessionAttributeElement 类类似的方式处理逻辑,但将 header 拆分为 session 属性名称和映射键。

关于tomcat - 在 Tomcat 上运行时如何从存储在 httpsession 上的 map 中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com