生成的日志文件包含访问该应用程序的所有用户的日志行。有没有办法追溯(或拉出)特定用户从特定IP地址生成的特定日志行?
我对以下内容更感兴趣:
注意:我不想使用grep命令从日志文件中提取所需的行。
仅供参考,我使用的是commons-logging和log4j框架。
答案 0 :(得分:0)
以下是每个问题的解决方案:
Java Servlet过滤器代码(LogServletFilter.java)
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
MDC.put("userId", "XXXXX");
MDC.put("ipAddr", "AB.CD.EF.GH");
filterChain.doFilter(request, response);
}
的log4j.xml
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p (%t) [%c{1}] %X{userId} %X{ipAddr} %m%n"/>
</layout>
的web.xml
<filter>
<filter-name>logFilter</filter-name>
<filter-class>com.web.filter.LogServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>logFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>