【问题标题】:How to enable application logs in wso2?如何在 wso2 中启用应用程序日志?
【发布时间】: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

我还检查了这些(12)在 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


【解决方案1】:

通过使用自定义中介,我可以记录完整的 请求/响应,但我希望记录所有“log.xxx()”行 根据我在 log4j2.properties 中设置的日志级别,在我的代码中有 WSO2 中的文件。我在代码中使用 slf4j 记录器,所以我尝试启用日志记录 对于“org.slf4j”包,还尝试为我的应用程序启用 特定的包,但都不起作用(添加了下面的“applogger” 在同一文件中列出逗号分隔的记录器:

logger.applogger.name = org.slf4j

logger.applogger.level = 调试

logger.applogger.name = my.application.package

logger.applogger.level = 调试

似乎您重复添加了相同的名称。添加以下您的应用程序记录器,如下所示:

logger.applogger.name = my.application.package 
logger.applogger.level = DEBUG

并将其设置为记录器配置:

loggers = AUDIT_LOG, trace-messages, org-apache-coyote, com-hazelcast, Owasp-CsrfGuard, org-apache-axis2-wsdl-codegen-writer-PrettyPrinter.... org-wso2-carbon-apimgt-gateway-mediators-BotDetectionMediator,correlation, JAGGERY_LOG, applogger

您不需要将记录器名称设置为org.slf4j。您应该只指定组件的包名称。检查后端实现是否使用 log4J2 进行日志记录。如果没有,可能是由于依赖版本不匹配导致的问题。

【讨论】:

  • 我没有重复添加applogger名称。它们都被单独添加以尝试两种方法来查看是否有任何效果(我在代码中使用 slf4j 记录器,因此我尝试为“org.slf4j”包启用日志记录,并尝试为我的应用程序的特定包启用日志记录,但都没有工作)。如果我的后端实现不使用 log4j2,我该怎么做才能获取日志?
  • 由于我们在后端实现中没有使用 log4j2,如何在 wso2 日志中生成日志语句?
猜你喜欢
  • 2017-11-22
  • 2018-04-10
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多