【发布时间】:2020-02-11 04:49:37
【问题描述】:
如何在 APIM_HOME>/repository/conf/log4j2.properties 文件中启用我的应用程序日志(在 WSO2 中发布的 API)?我浏览了 3.0.0 文档 (https://apim.docs.wso2.com/en/latest/Administer/ProductAdministration/Monitoring/Logging/setting-up-logging/#setting-up-logging-in-api-manager) 并尝试为我的应用程序组件配置日志记录,但我无法在 wso2carbon.log 中看到特定于应用程序的日志。
通过使用自定义中介,我可以记录完整的请求/响应,但我希望根据我在 log4j2 中设置的日志级别记录我的代码中的所有“log.xxx()”行。 WSO2 中的属性文件。我在代码中使用 slf4j 记录器,因此我尝试为“org.slf4j”包启用日志记录,并尝试为我的应用程序的特定包启用日志记录,但均未成功(下面的“applogger”已添加到同一文件中的逗号分隔记录器列表中:
# application logs
logger.applogger.name = org.slf4j
logger.applogger.level = DEBUG
logger.applogger.name = my.application.package
logger.applogger.level = DEBUG
我还检查了这些(1、2)在 SO 上记录相关问题,但找不到解决我问题的明确答案。当我尝试关注 this 链接以从 carbon 控制台启用消息跟踪时,我收到以下错误:
error
Cannot set eventing configuration. Backend server may be unavailable.; nested exception is:
org.apache.axis2.AxisFault: unknown - An error has occurred. Please refer the logs for more details.
在日志中:
TID: [-1234] [] [2020-02-11 04:56:48,913] ERROR {org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver} - Exception occurred while trying to invoke service method configureEventing java.lang.NullPointerException
at org.wso2.carbon.analytics.message.tracer.handler.conf.RegistryPersistenceManager.updateConfigurationProperty(RegistryPersistenceManager.java:84)
.............................
TID: [-1234] [] [2020-02-11 04:56:48,922] ERROR {org.wso2.carbon.analytics.message.tracer.handler.ui.MessageTracerHandlerAdminClient} - Cannot set eventing configuration. Backend server may be unavailable. org.apache.axis2.AxisFault: unknown
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
【问题讨论】:
-
您的自定义中介中使用的 log4j 版本是什么?
-
我没有在我的自定义中介中指定 log4j 版本。只有这个被添加到序列中:
<log level="full"> <property name="OUT_MESSAGE" value="OUT_MESSAGE"/> </log>我只是在自定义调解器中临时添加了这个来测试我是否可以记录整个响应。作为一项永久性措施,按照文档,我希望通过 log4j2.properties 文件添加日志记录。 -
对不起。我以为您正在使用自定义类调解器。因此,您的要求是记录请求和响应,并通过添加自定义中介来实现。你能解释一下你正在谈论的应用程序吗?我不太清楚你用 log4j2.properties 尝试什么?
-
Application:我在 WSO2 API-M 中发布的后端 API。 要求:我的 API 代码中有 log.info()、log.debug() 语句,我希望在某些日志中看到这些语句(例如:wso2carbon.log),但我无法获取那。这就是 log4j2.properties 的用武之地。我刚刚提到完整的请求/响应日志记录是通过自定义中介发生的,但这与我在代码中记录 INFO/DEBUG/ALL 语句的实际要求是分开的。希望对您有所帮助。
标签: logging wso2 log4j2 slf4j wso2carbon