Tomcat访问日志仅显示HTTP Post方法

时间:2016-01-14 21:12:18

标签: java api rest tomcat

对于部署在tomcat上的应用程序,是否可以仅获取POST方法的访问日志。目前它显示POST和GET的日志。

在阀门组件中,我看到配置了%m属性,它打印了两种方法(GET和POST)。

是否有任何配置可以显示POST请求。

server.xml中的配置

 <Valve className="org.apache.catalina.valves.AccessLogValve"  attribute directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

2 个答案:

答案 0 :(得分:0)

您可以使用实时尾部并过滤&#34; POST&#34;用grep

$ tail -f localhost_access_log.txt | grep "POST"

这不会修改访问日志的输出,但会允许您实时监控仅包含单词&#34; POST&#34;

的日志条目

如果您不担心实时监控,但只想查看所有POST条目而没有其他所有噪声,您可以使用grep创建一个新文件

$ cat localhost_access_log.txt | grep "POST" >> new_post_log_file.txt

在上面的例子中,&#34; new_post_log_file.txt&#34;将包含POST日志条目,没有别的。此方法需要您重新运行该命令以获取最新的日志。

答案 1 :(得分:0)

AccessLogValve不支持开箱即用。但是,扩展此类并进行以下调整应该很容易:

1)延长AccessLogValve
2)添加一个String标志,例如method
3)覆盖public void log(Request request, Response response, long time)方法。目前它有以下来源:

if (logElements == null || condition != null
            && null != request.getRequest().getAttribute(condition)) {
    return;
}
...

你的方法应该是

if (method != null && !method.equalsIgnoreCase(request.getMethod())) {
    return;
} else {
    super.log(request, response, time);
}

4)编译你的班级,并将阀门与你的旗帜一起使用。