Skip to main content
Deze documentatie beschrijft hoe u logging configureert met de AppSignal for Java-integratie.

Logging configureren

🔐 Stuur geen Persoonlijk Identificeerbare Informatie (PII) naar AppSignal. Filter PII (bijv. namen, e-mailadressen) uit logs en gebruik in plaats daarvan een ID, hash of gepseudonimiseerde identificator.

Voor onder HIPAA vallende entiteiten vindt u meer informatie over het ondertekenen van een Business Associate Agreement (BAA) in onze documentatie over Business Add-Ons.
U hoeft geen logbron aan te maken om logs te versturen vanuit de AppSignal for Java-integratie. Er wordt automatisch een “application”-logbron aangemaakt. De Java-integratie gebruikt de logging-mogelijkheden van OpenTelemetry om logs naar AppSignal te sturen.

Zelfstandig gebruik

Om logging met OpenTelemetry in Java te gebruiken, moet u de logger instellen met behulp van de OpenTelemetry LoggerProvider.
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();
    }
}

Gebruik met Log4j

Log4j wordt automatisch geïnstrumenteerd door de OpenTelemetry Java-agent. Logs die met Log4j2 worden uitgegeven, worden automatisch naar AppSignal verstuurd. Context die met ThreadContext of binnen StructuredDataMessage-logs wordt toegevoegd, wordt als log-tags in AppSignal weergegeven.
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();
    }
}

Gebruik met java.util.logging

Java’s ingebouwde logging-framework, java.util.logging, wordt automatisch geïnstrumenteerd door de OpenTelemetry Java-agent. Logs die met java.util.logging worden uitgegeven, worden automatisch naar AppSignal verstuurd.
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");
    }
}

Gebruik

Logs versturen

Door de OpenTelemetry-logger direct te gebruiken, kunt u de severity-niveau van uw logs definiëren:
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();
    }
}
U kunt aangepaste attributen definiëren om loginformatie te versturen die kan worden gebruikt bij het filteren en opvragen van logs:
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();
    }
}
U kunt op berichtinhoud en attribuutwaarden filteren en opvragen vanuit de Log Management-tool. Eenmaal geconfigureerd, worden de gewenste attributen als log-tags naar AppSignal verstuurd en zijn ze opvraagbaar in de AppSignal logging-interface.

Logs filteren

U kunt de configuratieoptie ignore_logs gebruiken om logregels te negeren. Zie onze gids Logs negeren voor meer informatie.

Hulp nodig?

Nadat u uw Java-applicatie hebt geconfigureerd om logs te versturen, zouden er logs in AppSignal moeten verschijnen. Als u twijfelt over deze stap of AppSignal geen logs ontvangt, kunt u altijd contact opnemen voor hulp. Wij helpen u graag weer op weg!