0

我的 light-4j 应用程序正在使用 AuditHandler 打印访问日志。打印的默认格式是:

{"timestamp":1580470146236,"endpoint":"/mmt/register@post","X-Correlation-Id":"123456","statusCode":200,"responseTime":70}

但是,客户端使用查询参数访问 API:/mmt/register?id=2

如何自定义访问日志,以便在访问日志中也打印查询参数?{"timestamp":1580470146236,"endpoint":"/mmt/register@post?id=2","X-Correlation-Id":"123456","statusCode":200,"responseTime":70}

我当前的 logback 设置是:

<appender name="access-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/opt/logs/Register/access.json</File>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/opt/logs/Register/access.%d{yyyy-MM-dd}.%i.json
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 1GB -->
                <maxFileSize>1GB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <MaxHistory>50</MaxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%m%n</Pattern>
        </encoder>
    </appender>
4

1 回答 1

0

默认 AuditHandler 仅记录作为路径和方法组合的端点。查询参数不是它的一部分。要记录查询参数,有两个选项。

  1. 如果您想在生产环境中记录查询参数,请在 light-4j 存储库中自定义 AuditHandler,并将其替换为 handler.yml 文件中自定义的 on。

  2. 如果您只需要在开发环境中记录查询参数,那么您可以在 DumpHandler 中连线。它基本上会根据请求和响应转储所有内容,包括标头、查询参数、路径参数、cookie 和请求正文。但是,它会显着降低系统速度,因此不建议在生产中启用它。查看 handler.yml 文件以取消注释处理程序并取消注释默认链中的别名。

于 2020-02-03T18:47:16.930 回答