谷歌云数据流eclipse插件在配置时无法显示TRACE日志或以下任何日志错误



当我配置谷歌云数据流eclipse插件时,我无法看到日志,该插件将workerLogLevelOverrides设置为{\"com.mycompany.testdataflow.StarterPipeline\":\"TRACE\"}

奇怪的是,ERROR级别的配置似乎显示了日志,但任何更低的级别都没有。

有人见过这个吗?

这是我用来尝试输出日志的代码段

private static final Logger LOG=LoggerFactory.getLogger(StarterPipeline.class);

public static void main(String[] args) {
Pipeline p = Pipeline.create(PipelineOptionsFactory.fromArgs(args).withValidation().create());
for (String string : args) {
// System.out.println("########## "+string);
LOG.trace("Doing the trace for pipeline ##### Parameter is #### " + string);
LOG.trace("Doing the trace for pipeline ##### Parameter is #### ");
}
LOG.trace("Doing the trace for pipeline");
p.apply(Create.of("Hello", "World")).apply(ParDo.of(new DoFn<String, String>() {
@Override
public void processElement(ProcessContext c) {
LOG.trace("Doing the trace for pipeline");
c.output(c.element().toUpperCase());
}
})).apply(ParDo.of(new DoFn<String, Void>() {
@Override
public void processElement(ProcessContext c) {
LOG.trace("Doing the trace for pipeline");
LOG.info(c.element());
}
}));

这来自数据流示例,除了我添加的日志记录,以查看是否能够看到任何日志。

使用BlockingDataflowPipelineRunnerDataflowPipelineRunner运行管道时,需要执行两部分。首先,您的主要方法是在您的机器上本地运行以生成管道。当您调用p.run()时,管道将被传送到Dataflow服务,在那里它在(可能有很多)虚拟机上运行。

直接在main方法中的日志语句(如"Doing The trace for pipeline…")发生在您的机器上,并将显示在Eclipse控制台中。DoFn中的日志语句发生在虚拟机上,并且只显示在云日志中,如DebuggingWordCount示例中所述。

指定workerLogLevelOverrides会影响工作虚拟机的日志级别。因此,更改该值将影响DoFn向Cloud Logging记录的内容。

要调整机器上运行的代码的日志级别(因此使用main方法),您需要调整运行主程序的SLF4J或java.util.logging日志级别。例如,Stack Overflow上的这些说明建议使用日志配置文件。

最新更新