我看到对 System.err 的写入映射到 GCP 日志记录中的错误级别日志记录事件。有没有办法将这些映射到不同的日志记录级别,例如警告级别?
在我们的代码中,我们总是写入 SLF4J 记录器,但我们使用的是不幸写入 System.err 并引发异常的第三方库。由于我们有异常,我们不想将 System.err 记录为错误。
更新:看起来 Dataflow 曾经有一个 com.google.cloud.dataflow.sdk.runners.worker.logging.DataflowWorkerLoggingInitializer 类,它允许我按照我的意愿配置 stdout 和 stderr。有谁知道它为什么被删除?
我会使用命令行选项配置它:
--workerLogLevelOverrides={\"System.err":\"WARN\",\"System.out\":\"DEBUG\"}
或以下代码:
/**
* Maps the "System.err" and "System.out" loggers to desired levels.
* Note: the "System.err" and "System.out" logger are not currently part of the specification as of v1.5.1,
* so this is dependent on the current implementation of com.google.cloud.dataflow.sdk.runners.worker.logging.DataflowWorkerLoggingInitializer
* which does configure those loggers.
* @param options
*/
public static void setupSystemOutAndErrLogging(DataflowWorkerLoggingOptions options) {
WorkerLogLevelOverrides overrides = options.getWorkerLogLevelOverrides();
if ( overrides == null ) {
overrides = new WorkerLogLevelOverrides();
}
options.setWorkerLogLevelOverrides(
overrides.addOverrideForName("System.err", Level.WARN)
.addOverrideForName("System.out", Level.DEBUG));
}