【问题标题】:Spring boot 2.0/Tomcat 8.5 - Session attribute in log fileSpring boot 2.0/Tomcat 8.5 - 日志文件中的会话属性
【发布时间】:2018-07-01 02:32:53
【问题描述】:

我想记录发出每个请求的用户名。 成功登录后,我使用这种方法将用户名设置为会话变量 - 用户名。

@Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        String username = merchandiserRepository.findByUsername(authentication.getName()).getUsername();
        request.getSession(true).setAttribute("username", username);
        logger.warn("Successfully logged in: " + username);
        response.sendRedirect("/page/1");
    }

在我的 Tomcat 日志模式中是:

server.tomcat.accesslog.pattern=%h %l %{username}s %t "%r" %s %b %T %{User-Agent}i

%{username}s 应该是用户名,但它显示“ - ” 我从-https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html看到了这个属性

我正在使用 redis 进行会话持久化。 有什么建议为什么它不起作用?

【问题讨论】:

  • 您不必设置会话变量。如果您正在登录并拥有 spring 安全上下文,那么您的 @AuthenticatedPrincipal 应该具有 UserDetails/Principal。在您的示例中,您的记录器是否将用户名正确打印到日志中?
  • 记录器工作正常。问题是用户名在 Tomcat 日志文件中不可用.. :)
  • 您是否在日志文件中看到“ - - ”?如果您正在设置 %{username}s 我不认为它默认为 - 如果它丢失。你能给我看一个日志输出的例子吗?

标签: session tomcat redis


【解决方案1】:

我想我理解你想要完成的事情。我完成了同样的事情,但方式略有不同。

尝试添加此依赖项:

    <dependency>
        <groupId>net.rakugakibox.spring.boot</groupId>
        <artifactId>logback-access-spring-boot-starter</artifactId>
        <version>2.5.0</version>
    </dependency>

这是我放入 src/main/resources/ 中的 logback-access.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration debug="false" scan="false">
        <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashAccessEncoder">
                <fieldNames>
                    <message>message</message>
                </fieldNames>
            </encoder>
        </appender>
        <appender-ref ref="CONSOLE"/>
    </configuration>

我不知道您的问题的根本原因,但这可能是您想要完成的解决方案。

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2019-10-25
    • 1970-01-01
    • 2014-06-29
    • 2019-09-08
    • 2021-07-13
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多