Skip to main content
Esta documentação descreve como configurar o logging com a integração AppSignal for Go.

Configurar logging

🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) dos logs e use um ID, hash ou identificador pseudonimizado no lugar.

Para entidades cobertas pela HIPAA, mais informações sobre como assinar um Business Associate Agreement (BAA) podem ser encontradas em nossa documentação de Business Add-Ons.
Você não precisa criar uma fonte de log para enviar logs da integração AppSignal for Go. Uma fonte de log “application” será criada automaticamente. A integração Go utiliza os recursos de logging do OpenTelemetry para enviar logs ao AppSignal.

Uso autônomo

Para usar o logging com OpenTelemetry em Go, você precisa configurar o logger usando o logger provider do OpenTelemetry.
package main

import (
	"context"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/log"
)

func main() {
	// Get the logger from the global logger provider
	loggerProvider := otel.GetLoggerProvider()
	logger := loggerProvider.Logger("my-app")

	// Log a message
	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityInfo,
		Body:     log.StringValue("Log message line"),
	})
}

Uso com slog

Você pode configurar o pacote padrão slog para enviar logs estruturados ao AppSignal usando o handler do OpenTelemetry.
package main

import (
	"context"
	"log/slog"
	"go.opentelemetry.io/contrib/bridges/otelslog"
)

func main() {
	// Create an OpenTelemetry `slog` handler
	otelHandler := otelslog.NewHandler("my-app")

	// Create a `slog` logger with the OpenTelemetry handler
	logger := slog.New(otelHandler)

	// Use the logger
	logger.Info("Log message line")
	logger.With("user_id", 123).Info("User logged in")
	logger.Error("An error occurred", "error", "database connection failed")
}

Uso

Enviando logs

Usando o logger do OpenTelemetry diretamente, você pode definir o nível de severidade dos seus logs:
package main

import (
	"context"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/log"
)

func main() {
	loggerProvider := otel.GetLoggerProvider()
	logger := loggerProvider.Logger("my-app")

	// Different severity levels
	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityWarn,
		Body:     log.StringValue("Something went wrong"),
	})

	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityInfo,
		Body:     log.StringValue("Action completed"),
	})

	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityError,
		Body:     log.StringValue("Database connection failed"),
	})
}
Você pode definir atributos personalizados para enviar informações de log que podem ser usadas ao filtrar e consultar logs:
package main

import (
	"context"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/log"
)

func processInvoice(customerID string) {
	loggerProvider := otel.GetLoggerProvider()
	logger := loggerProvider.Logger("invoice_helper")

	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityInfo,
		Body:     log.StringValue("Generating invoice for customer"),
		Attributes: []log.KeyValue{
			log.String("customer_id", customerID),
		},
	})

	invoice := generateInvoice(customerID)

	logger.Emit(context.Background(), log.Record{
		Severity: log.SeverityInfo,
		Body:     log.StringValue("Generated invoice for customer"),
		Attributes: []log.KeyValue{
			log.String("customer_id", customerID),
			log.String("invoice_id", invoice.ID),
		},
	})
}
Você pode consultar e filtrar pelo conteúdo da mensagem e pelos valores dos atributos dentro da ferramenta Log Management. Uma vez configurados, os atributos desejados serão enviados ao AppSignal como tags de log e poderão ser consultados na interface de logging do AppSignal.

Filtrando logs

Você pode usar a opção de configuração ignore_logs para ignorar linhas de log. Veja nosso guia Ignore Logs para saber mais.

Precisa de ajuda?

Depois de configurar sua aplicação Go para enviar logs, os logs devem aparecer no AppSignal. Se você tiver dúvidas sobre este passo ou o AppSignal não estiver recebendo logs, você sempre pode entrar em contato para obter ajuda. Vamos te ajudar a voltar ao normal!