All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opentelemetry.javaagent.logging.application.ApplicationLoggingCustomizer Maven / Gradle / Ivy

There is a newer version: 2.8.0-alpha
Show newest version
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.javaagent.logging.application;

import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.bootstrap.InternalLogger;
import io.opentelemetry.javaagent.bootstrap.logging.ApplicationLoggerBridge;
import io.opentelemetry.javaagent.tooling.LoggingCustomizer;
import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig;

@AutoService(LoggingCustomizer.class)
public final class ApplicationLoggingCustomizer implements LoggingCustomizer {

  @Override
  public String name() {
    return "application";
  }

  @Override
  public void init(EarlyInitAgentConfig earlyConfig) {
    int limit =
        earlyConfig.getInt("otel.javaagent.logging.application.logs-buffer-max-records", 2048);
    InMemoryLogStore inMemoryLogStore = new InMemoryLogStore(limit);
    ApplicationLoggerFactory loggerFactory = new ApplicationLoggerFactory(inMemoryLogStore);
    // register a shutdown hook that'll dump the logs to stderr in case something goes wrong
    Runtime.getRuntime().addShutdownHook(new Thread(() -> inMemoryLogStore.dump(System.err)));
    ApplicationLoggerBridge.set(loggerFactory);
    InternalLogger.initialize(loggerFactory);
  }

  @Override
  public void onStartupSuccess() {}

  @Override
  @SuppressWarnings("SystemOut")
  public void onStartupFailure(Throwable throwable) {
    // most likely the application bridge wasn't initialized, let's just print
    System.err.println("OpenTelemetry Javaagent failed to start");
    throwable.printStackTrace();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy