如何在 wso2 apim 日志中显示用户名和调用的 api 名称?

How to display username and invoked api name in wso2 apim log?

我正在尝试配置 wso2 apim (4.0.0) 的网关访问日志,以便它在日志文件中包含 api 用户名和 api 名称。我关注了 this documentation.

我想要的日志文件结构如下:

日期时间 |远程IP |用户名 | invoked_api_name | api_url |请求 |回应

感谢任何帮助

您无法在 access_log 中包含用户名,因为此级别的信息不可用。 您可以编写自定义处理程序以在日志文件中记录所需的信息。 https://github.com/CrowleyRajapakse/CustomLogHandler

invoked_api_nameusername 在访问日志级别不可用。因此,您可以实施自定义 Synapse 处理程序以将相关信息记录到 wso2carbon.log 或根据需要单独记录。

这是为 API Manager 3.2.0 Custom API Log Handler. You can also refer to the Handler mentioned by 编写的示例。

更新依赖项以与 API Manager 4.0.0 环境保持一致。用于处理程序的 TOML 配置如下(与 3.2.0 中的配置略有不同)

[synapse_handlers.<custom_name>]
enabled = true
class = '<package-name.class>'

例如

[synapse_handlers.api_log_handler]
enabled = true
class = 'com.sample.handlers.APILogHandler'

更新

我已经使用 API Manager 4.0.0 依赖项更新了自定义处理程序实现。找到分支并更新 README here.