Skip to main content
Cette documentation décrit comment configurer la journalisation avec l’intégration AppSignal for Java.

Configurer la journalisation

🔐 N’envoyez pas d’informations personnelles identifiables (PII) à AppSignal. Filtrez les PII (par exemple, noms, e-mails) des journaux et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place.

Pour les entités couvertes par la HIPAA, plus d’informations sur la signature d’un Business Associate Agreement (BAA) sont disponibles dans notre documentation Business Add-Ons.
Vous n’avez pas besoin de créer une source de journaux pour envoyer des journaux depuis l’intégration AppSignal for Java. Une source de journaux “application” sera créée automatiquement. L’intégration Java utilise les capacités de journalisation d’OpenTelemetry pour envoyer des journaux à AppSignal.

Utilisation autonome

Pour utiliser la journalisation avec OpenTelemetry en Java, vous devez configurer le logger en utilisant le LoggerProvider d’OpenTelemetry.
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.Logger;
import io.opentelemetry.api.logs.LoggerProvider;
import io.opentelemetry.api.logs.Severity;

public class MyApplication {
    public void logMessages() {
        // Get the logger from the global logger provider
        LoggerProvider loggerProvider = GlobalOpenTelemetry.getLoggerProvider();
        Logger logger = loggerProvider.get("my-app");

        // Log a message
        logger.logRecordBuilder()
            .setSeverity(Severity.INFO)
            .setBody("Log message line")
            .emit();
    }
}

Utilisation avec Log4j

Log4j est automatiquement instrumenté par l’agent Java OpenTelemetry. Les journaux émis à l’aide de Log4j2 seront automatiquement envoyés à AppSignal. Le contexte ajouté à l’aide de ThreadContext ou dans les journaux StructuredDataMessage sera affiché comme tags de journal dans AppSignal.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.message.StructuredDataMessage;

public class MyService {
    private static final Logger logger = LogManager.getLogger(MyService.class);

    public void processOrder(String orderId) {
        // This will be shown as a tag in AppSignal for all log lines
        ThreadContext.put("order_id", orderId);

        logger.info("Processing order");

        StructuredDataMessage structuredMessage = new StructuredDataMessage(
            "processing_items", // ID (not shown in AppSignal)
            String.format("Processing items in order"), // Message
            "order" // Type (not shown in AppSignal)
        );

        // This will be shown as a tag in AppSignal for this log line
        structuredMessage.put("item_count", 123);
        logger.info(structuredMessage);

        ThreadContext.clearAll();
    }
}

Utilisation avec java.util.logging

Le framework de journalisation intégré de Java, java.util.logging, est automatiquement instrumenté par l’agent Java OpenTelemetry. Les journaux émis à l’aide de java.util.logging seront automatiquement envoyés à AppSignal.
import java.util.logging.Logger;
import java.util.logging.Level;

public class MyApplication {
    private static final Logger logger = Logger.getLogger(MyApplication.class.getName());

    public void doSomething() {
        logger.info("Application started");
        logger.log(Level.WARNING, "This is a warning message");
        logger.severe("This is an error message");
    }
}

Utilisation

Envoi de journaux

En utilisant directement le logger OpenTelemetry, vous pouvez définir le niveau de sévérité de vos journaux :
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.Logger;
import io.opentelemetry.api.logs.LoggerProvider;
import io.opentelemetry.api.logs.Severity;

public class MyApplication {
    public void sendLogs() {
        // Get the logger from the global logger provider
        LoggerProvider loggerProvider = GlobalOpenTelemetry.getLoggerProvider();
        Logger logger = loggerProvider.get("my-app");

        // Different severity levels
        logger.logRecordBuilder()
            .setSeverity(Severity.WARN)
            .setBody("Something went wrong")
            .emit();

        logger.logRecordBuilder()
            .setSeverity(Severity.INFO)
            .setBody("Action completed successfully")
            .emit();

        logger.logRecordBuilder()
            .setSeverity(Severity.ERROR)
            .setBody("Database connection failed")
            .emit();
    }
}
Vous pouvez définir des attributs personnalisés pour envoyer des informations de journal qui peuvent être utilisées lors du filtrage et de l’interrogation des journaux :
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.logs.Logger;
import io.opentelemetry.api.logs.LoggerProvider;
import io.opentelemetry.api.logs.Severity;

public class InvoiceService {
    public void generateInvoice(Customer customer) {
        LoggerProvider loggerProvider = GlobalOpenTelemetry.getLoggerProvider();
        Logger logger = loggerProvider.get("invoice_helper");

        logger.logRecordBuilder()
            .setSeverity(Severity.INFO)
            .setBody("Generating invoice for customer")
            .setAllAttributes(Attributes.of(
                AttributeKey.stringKey("customer_id"), customer.getId()
            ))
            .emit();
    }
}
Vous pouvez interroger et filtrer le contenu des messages et les valeurs d’attribut depuis l’outil Log Management. Une fois configurés, les attributs souhaités seront envoyés à AppSignal en tant que tags de journal, et seront interrogeables dans l’interface de journalisation d’AppSignal.

Filtrage des journaux

Vous pouvez utiliser l’option de configuration ignore_logs pour ignorer les lignes de journal. Consultez notre guide Ignore Logs pour en savoir plus.

Besoin d’aide ?

Après avoir configuré votre application Java pour envoyer des journaux, les journaux devraient apparaître dans AppSignal. Si vous avez des doutes sur cette étape ou si AppSignal ne reçoit aucun journal, vous pouvez toujours nous contacter pour obtenir de l’aide. Nous vous aiderons à remettre les choses sur la bonne voie !