You need to enable JavaScript to run this app. 如何在WSO2 APIM网关访问日志中展示调用特定API的用户资料信息
优惠活动
大模型
产品
解决方案
定价
更多

如何在WSO2 APIM网关访问日志中展示调用特定API的用户资料信息

WSO2 APIM 4.0.0 自定义网关访问日志配置步骤

步骤1:添加全局自定义请求中介策略,提取所需属性

首先需要创建全局请求中介序列,将用户所属组织、API所有者等信息从JWT声明或者APIM注册表中提取出来,存入Synapse消息上下文:

  • 在<APIM_HOME>/repository/deployment/server/synapse-configs/default/sequences目录下新建custom_log_extractor.xml文件,内容如下:
<sequence name="custom_log_extractor" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <!-- 提取调用用户用户名 -->
    <property name="username" expression="$ctx:api.ut.userName"/>
    <!-- 提取用户所属组织,假设组织信息存在JWT的organization声明中,可根据实际声明名修改 -->
    <property name="user_organization" expression="$jwt:organization"/>
    <!-- 提取被调用API名称 -->
    <property name="invoked_api_name" expression="$ctx:API_NAME"/>
    <!-- 提取API所有者 -->
    <property name="api_owner" expression="$ctx:api.ut.apiPublisher"/>
    <!-- 提取API请求URL -->
    <property name="api_url" expression="$ctx:REST_URL_POSTFIX"/>
    <!-- 提取请求 payload,如需完整请求体可自行调整配置 -->
    <property name="request_payload" expression="$body:json()"/>
</sequence>
  • 将该序列绑定为全局请求中介,在<APIM_HOME>/repository/conf/deployment.toml中添加以下配置:
[apim.sync_runtime_artifacts.gateway.global_sequences]
request = ["custom_log_extractor"]

步骤2:修改log4j2配置,自定义日志输出格式

打开<APIM_HOME>/repository/conf/log4j2.properties文件,按需做以下修改:

  • 如需直接修改默认日志的输出格式,找到appender.CARBON_LOGFILE.layout.pattern配置项,替换为自定义格式:
appender.CARBON_LOGFILE.layout.pattern = %d{ISO8601} | %X{username} | %X{user_organization} | %X{invoked_api_name} | %X{api_owner} | %X{api_url} | %X{request_payload} | %msg%n
  • 如需将自定义访问日志输出到独立文件,可新增自定义appender配置:
appender.CUSTOM_ACCESS_LOG.type = RollingFile
appender.CUSTOM_ACCESS_LOG.name = CUSTOM_ACCESS_LOG
appender.CUSTOM_ACCESS_LOG.fileName = ${sys:carbon.home}/repository/logs/custom-access.log
appender.CUSTOM_ACCESS_LOG.filePattern = ${sys:carbon.home}/repository/logs/custom-access-%d{MM-dd-yyyy}.log
appender.CUSTOM_ACCESS_LOG.layout.type = PatternLayout
appender.CUSTOM_ACCESS_LOG.layout.pattern = %X{username} | %X{user_organization} | %X{invoked_api_name} | %X{api_owner} | %X{api_url} | %X{request_payload} | %msg%n
appender.CUSTOM_ACCESS_LOG.policies.type = Policies
appender.CUSTOM_ACCESS_LOG.policies.time.type = TimeBasedTriggeringPolicy
appender.CUSTOM_ACCESS_LOG.policies.time.interval = 1
appender.CUSTOM_ACCESS_LOG.policies.time.modulate = true
appender.CUSTOM_ACCESS_LOG.strategy.type = DefaultRolloverStrategy
appender.CUSTOM_ACCESS_LOG.strategy.max = 30

logger.CUSTOM_ACCESS_LOG.name = org.apache.synapse.transport.http.access
logger.CUSTOM_ACCESS_LOG.level = INFO
logger.CUSTOM_ACCESS_LOG.additivity = false
logger.CUSTOM_ACCESS_LOG.appenderRef.CUSTOM_ACCESS_LOG.ref = CUSTOM_ACCESS_LOG
  • 完成新增appender配置后,将其添加到root logger的引用列表中:
rootLogger.appenderRef.CUSTOM_ACCESS_LOG.ref = CUSTOM_ACCESS_LOG

步骤3:重启服务生效

修改完所有配置后重启WSO2 APIM服务,后续网关请求就会按照指定格式输出日志。
注意:如果用户组织信息没有存在JWT声明中,可根据实际存储位置调整中介序列里的取值表达式;如果需要输出响应payload,新增响应中介序列提取响应体存入上下文即可。

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:48:03