Mulesoft/Cloudhub - 如何让 Java class 的输出显示在日志中?

Mulesoft/Cloudhub - How do I get output from a Java class to show up in the log?

标题说明了一切...

我有一个部署到 cloudhub 的 Mulesoft 应用程序(但 运行ning locally/on-prem 的问题相同)。我的应用程序有一个 Java Invoke 组件,它调用我的 Java class 中的一个方法。

该方法包含输出语句,例如System.out 和System.err。如果我 运行 我在 Anypoint Studio 中的应用程序,此输出会按预期显示在控制台中......但它不会显示在日志文件中(本地或 cloudhub 上)。

如何让 Java class 的输出显示在日志文件中?

这是预期的...System.out 未打印在日志中不应在生产环境中使用...
您需要在 src/main/resource 文件夹中使用 log4j2.xml,并且需要在 Java class 中使用 org.apache.logging.log4j

一个例子:-

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4j2Tester {
    private static final Logger LOG = LogManager.getLogger(Log4j2Tester.class);

    public String test(String args) {
        LOG.error("testing ERROR level");

        LOG.info("testing INFO level");
        LOG.trace("exiting application");
        return "Done";
    }
}

更多参考:- https://logging.apache.org/log4j/2.x/manual/configuration.html
对于 Cloudhub 自定义日志附加程序:- https://docs.mulesoft.com/runtime-manager/custom-log-appender