gpt4 book ai didi

java - 如何将 java 组件中的内容记录到 Mule 日志文件中?

转载 作者:行者123 更新时间:2023-12-01 09:23:18 24 4
gpt4 key购买 nike

为什么我在 Mule 日志文件中看不到 java 组件中发生的错误?此外,假设我在java中有system.out.print,我怎样才能看到日志文件中的输出?

最佳答案

我假设您正在编写自己的实现可调用的 Java 组件。

要从 Java 组件内的日志中写入内容,您需要获取一个记录器,例如:

final static Logger logger = Logger.getLogger(MyCallableClass.class);

参见https://www.mkyong.com/logging/log4j-hello-world-example/

然后,您可以在您的函数中创建一个日志条目,例如:

logger.error("This is an example of a log entry with Error Level.");

对于你的另一个问题,除非你在组件中使用 try catch block ,否则组件中抛出的异常应该传播到 mule 流,但是在 Mule 日志中你还会看到异常是由 Java 引起的成分。

我建议您附加有关 Java 组件正在执行的操作的更多信息以及日志,以便我们能够更好地了解您所遇到的情况。

也就是说,我创建了一个快速示例(见下文)来帮助您。当您运行并点击 http 端点时,您应该会看到记录器中打印出一条消息,作为组件内的错误,然后抛出一个自定义异常,并在与我们的表达式匹配的 catch 异常策略 block 中捕获该异常:

流程:

<flow name="flow-that-calls-component-with-exception">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8089" doc:name="HTTP" />
<component class="com.example.MyCallableClass" doc:name="Java" />

<choice-exception-strategy>

<catch-exception-strategy when="exception.causedBy(com.example.MyCustomException)">
<logger level="ERROR" message="My Custom Exception was thrown" />
<set-payload value="My Custom Exception was thrown." />
</catch-exception-strategy>

<catch-exception-strategy>
<logger level="ERROR" message="Another exception was thrown" />
<set-payload value="Another exception was thrown." />
</catch-exception-strategy>

</choice-exception-strategy>
</flow>

Java 组件:

package com.example;

import org.apache.log4j.Logger;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;

public class MyCallableClass implements Callable {

final static Logger logger = Logger.getLogger(MyCallableClass.class);

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {

logger.error("This is an example of a log entry with Error Level.");
//Our Java component will throw an exception so that we can see that we can catch it in a flow
throw new MyCustomException();
// throw new Exception("This is an exception that will be thrown in a flow");
// return eventContext.getMessage().getPayload();
}

}

自定义异常:

package com.example;

public class MyCustomException extends Exception {

/**
*
*/
private static final long serialVersionUID = -5738957517051661541L;

}

关于java - 如何将 java 组件中的内容记录到 Mule 日志文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40015314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com