WSO2 API Manager 2.1.0:能否为特定API维护独立日志文件?
在WSO2 API Manager 2.1.0中为特定API配置独立日志文件
完全可以实现,你只需要通过调整log4j配置来完成,具体步骤如下:
- 编辑
<APIM_HOME>/repository/conf/log4j.properties文件,先添加一个自定义的文件appender,用于输出特定API的日志:
# 定义自定义appender log4j.appender.API_SPECIFIC_LOGFILE=org.apache.log4j.RollingFileAppender # 日志文件路径和名称,可自行修改 log4j.appender.API_SPECIFIC_LOGFILE.File=${carbon.home}/repository/logs/my-special-api.log # 单个日志文件的最大大小 log4j.appender.API_SPECIFIC_LOGFILE.MaxFileSize=10MB # 保留的备份日志文件数量 log4j.appender.API_SPECIFIC_LOGFILE.MaxBackupIndex=10 # 日志格式 log4j.appender.API_SPECIFIC_LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.API_SPECIFIC_LOGFILE.layout.ConversionPattern=[%d] %5p {%c} - %m%n
- 接着添加一个针对API网关日志的logger,并关联刚才的appender,同时设置过滤规则:
# 关联API网关日志记录器到自定义appender log4j.logger.org.wso2.carbon.apimgt.gateway.handlers.logging.APIMgtGatewayLogger=INFO, API_SPECIFIC_LOGFILE # 关闭日志的叠加输出,避免同时写入默认日志文件 log4j.additivity.org.wso2.carbon.apimgt.gateway.handlers.logging.APIMgtGatewayLogger=false # 添加过滤器,只记录特定API的日志(这里以API的context为例,替换成你的API context) log4j.appender.API_SPECIFIC_LOGFILE.filter=org.apache.log4j.varia.StringMatchFilter log4j.appender.API_SPECIFIC_LOGFILE.filter.StringToMatch=/my-special-api log4j.appender.API_SPECIFIC_LOGFILE.filter.AcceptOnMatch=true
- 最后重启WSO2 API Manager服务,配置即可生效。
如果需要更精准的过滤(比如按API名称、版本),可以查看默认日志文件中该API请求对应的日志内容,调整StringToMatch的值即可。
内容的提问来源于stack exchange,提问作者Lilan Mihiranga
相关产品推荐
相关产品推荐

