Pular para o conteúdo principal
Por padrão, as integrações do AppSignal rastreiam os dados de sessão da requisição para aplicativos web em bibliotecas suportadas. Você pode definir dados de sessão personalizados em uma transação ou span. Modificar os dados de sessão sobrescreverá os dados definidos pelas instrumentações do AppSignal. Todos os dados de sessão da requisição são filtrados por nossas integrações antes de serem enviados aos nossos servidores.
🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) e use um ID, hash ou identificador pseudonimizado no lugar.

Use Link Templates para vinculá-los de volta em sua aplicação.
Veja a tabela abaixo para uma lista de valores raiz aceitos por linguagem. Cada objeto aninhado pode conter valores que resultem em JSON válido (strings, inteiros, floats, booleanos, nulls, etc.).
LinguagemValores raiz aceitos
RubyArrays, Hashes
JavaScriptArrays, Objects
ElixirLists, Maps
PythonLists, Maps
GoString serializada em JSON
JavaString serializada em JSON
PHPArrays, Objects
# Chame `add_session_data` várias vezes para definir mais dados de sessão
Appsignal.add_session_data(
  :user_id => "123",
  :menu => { :type => "hamburger" }
)
Appsignal.add_session_data(:menu => { :state => "closed" })
Appsignal.add_session_data(:menu => { :state => "open" })
# Dados de sessão:
# {
#   :user_id => "123",
#   :menu => { :state => "open" }
# }
Appsignal.Span.set_sample_data(
  Appsignal.Tracer.root_span,
  "session_data",
  %{user_id: "123", menu: "open"}
)
import { setSessionData } from "@appsignal/nodejs";

setSessionData({ user_id: "123", menu: "open" });
from appsignal import set_session_data

set_session_data({"user_id": "123", "menu": "open"})
// Uma configuração adicional é necessária para primeiro buscar ou criar um novo span
import (
	"encoding/json"

	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/trace"
)

session_data := map[string]interface{}{
	"key1": "value1",
	"key2": "value2",
	"nested": map[string]interface{}{
		"key3": "value3",
		"key4": "value4",
	},
}
json, _ := json.Marshal(session_data)
span.SetAttributes(attribute.String("appsignal.request.session_data", string(json)))
// Uma configuração adicional é necessária para primeiro buscar ou criar um novo span
import io.opentelemetry.api.trace.Span;
// Estamos usando a biblioteca JSON Jackson
// Você pode precisar adicioná-la ao seu projeto como uma dependência
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> sessionData = new HashMap<>();
sessionData.put("user_id", "123");
sessionData.put("menu", "open");

Map<String, String> nested = new HashMap<>();
nested.put("key3", "value3");
nested.put("key4", "value4");
sessionData.put("nested", nested);

try {
    ObjectMapper mapper = new ObjectMapper();
    String jsonString = mapper.writeValueAsString(sessionData);

    Span span = Span.current();
    span.setAttribute("appsignal.request.session_data", jsonString);
} catch (Exception e) {
    // Adicione o tratamento de erros aqui
}
<?php
use Appsignal\Appsignal;

$data = [
    'param1' => 'value1',
    'param2' => 'value2',
    'nested' => [
        'param3' => 'value3',
        'param4' => 'value4',
    ],
];

Appsignal::setSessionData($data);
Para certas linguagens, é necessária uma configuração adicional. Siga as instruções para essas linguagens: session_data

Limitações

Se a aplicação definir dados de sessão várias vezes, a gem Ruby mesclará os valores no nível raiz. Para outras integrações, apenas o último valor definido é armazenado.