java – 带有认证用户的嵌入式tomcat访问日志的Spring启动

我正在使用带有嵌入式tomcat弹簧安全性的spring boot.
我从tomcat访问日志看起来像这样

IP – – [14 / Feb / 2017:08:49:50 0200]“GET / page / 2 HTTP / 1.1”200 2606

那么,我怎样才能使日志文件看起来像

IP – – [14 / Feb / 2017:08:49:50 0200]用户名 – “GET / page / 2 HTTP / 1.1”200 2606

每个请求都必须具有用户名.对于安全验证,我使用spring security和数据库用户名和密码信息.

最佳答案
您可能需要将应用程序属性中的access log pattern更改为以下内容:

server.tomcat.accesslog.pattern=%h %l %t %u "%r" %s %b

其中%u是已经过身份验证的远程用户(请参阅示例here).

UPD:可能这还不够,因为普通模式已包含%u参数.在这种情况下,我会建议另外两个步骤:

1)将用户名放入请求会话参数,例如:

request.getSession().addAttribute(“username”,user.getName());

2)在访问日志模式中添加以下参数:%{username} s

server.tomcat.accesslog.pattern=%h %l %t %u %{username}s "%r" %s %b

应该从HttpSession获取名为username的属性,如here所述.

转载注明原文:java – 带有认证用户的嵌入式tomcat访问日志的Spring启动 - 代码日志