private void logWithTracker()

in services/library/src/main/java/com/google/cloud/pso/bq_snapshot_manager/helpers/LoggingHelper.java [263:310]


    private void logWithTracker(ApplicationLog log, Boolean isDryRun, String tracker, @Nullable TableSpec tableSpec, String msg, Level level, Object [] extraAttributes) {

        // Enable JSON logging with Logback and SLF4J by enabling the Logstash JSON Encoder in your logback.xml configuration.

        String payload = String.format("%s | %s | %s | %s | %s | %s",
                applicationName,
                log,
                loggerName,
                isDryRun!=null? (isDryRun?"Dry-Run":"Wet-Run") : null,
                tracker,
                msg
        );

        String runId;
        try{
            runId = TrackingHelper.parseRunIdAsPrefix(tracker);
        }catch (Exception e){
            // so that it never appears in max(run_id) queries
            runId = TrackingHelper.MIN_RUN_ID;
        }

        Object [] globalAttributes = new Object[]{
                kv("global_app", applicationName),
                kv("global_logger_name", this.loggerName),
                kv("global_app_log", log),
                kv("global_tracker", tracker),
                kv("global_is_dry_run", isDryRun == null? null: isDryRun.toString()),
                kv("global_tablespec_project", tableSpec == null? null: tableSpec.getProject()),
                kv("global_tablespec_dataset", tableSpec == null? null: tableSpec.getDataset()),
                kv("global_tablespec_table", tableSpec == null? null: tableSpec.getTable()),
                kv("global_run_id", runId),
                kv("global_msg", msg),
                kv("severity", level.toString()),

                // Group all log entries with the same tracker in CLoud Logging iew
                kv("logging.googleapis.com/trace",
                        String.format("projects/%s/traces/%s", projectId, tracker))
        };

        // setting the "severity" KV will override the logger.<severity>
        logger.info(
                payload,
                Stream.concat(
                        Arrays.stream(globalAttributes),
                        Arrays.stream(extraAttributes)
                ).toArray()
        );
    }