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));
}