Skip to main content
Version: 4.0.x

使用日志主题进行调试

使用Pulsar Functions时,您可以将函数中预定义的日志生成到指定的日志主题,并配置消费者从日志主题消费消息。

例如,以下函数根据传入的字符串是否包含单词danger来记录WARNING级别或INFO级别的日志。

import org.apache.pulsar.functions.api.Context;
import org.apache.pulsar.functions.api.Function;
import org.slf4j.Logger;

public class LoggingFunction implements Function<String, Void> {
@Override
public void apply(String input, Context context) {
Logger LOG = context.getLogger();
String messageId = new String(context.getMessageId());

if (input.contains("danger")) {
LOG.warn("A warning was received in message {}", messageId);
} else {
LOG.info("Message {} received\nContent: {}", messageId, input);
}

return null;
}
}

如示例所示,您可以通过context.getLogger()获取记录器,并将其分配给slf4jLOG变量,这样您就可以在函数中使用LOG变量定义所需的日志。

同时,您需要指定日志可以生成的主题。以下是一个示例。

bin/pulsar-admin functions create \
--log-topic persistent://public/default/logging-function-logs \
# Other function configs

发布到日志主题的消息包含几个属性:

  • loglevel: 日志消息的级别。
  • fqn: 推送此日志消息的完全限定函数名称。
  • instance: 推送此日志消息的函数实例的ID。