Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Esta é uma documentação não divulgada para Admission Controller 1.34-dev.

Registro

O Go SDK se integra ao projeto onelog, quase pronto para uso.

O projeto escolheu esta biblioteca como:

  • Funciona com binários WebAssembly. Outras soluções de logging populares não conseguem compilar para o WebAssembly.

  • Ele fornece bom desempenho.

  • Suporta logging estruturado.

Inicializar logger

Você precisa inicializar uma estrutura de logger. Ao realizar esta inicialização em uma variável global, você pode registrar a partir dos dois principais pontos de entrada da política: validate e validate_settings.

No pacote principal, main.go há inicialização para o logger:

var (
    logWriter = kubewarden.KubewardenLogWriter{}
    logger    = onelog.New(
        &logWriter,
        onelog.ALL, // shortcut for onelog.DEBUG|onelog.INFO|onelog.WARN|onelog.ERROR|onelog.FATAL
    )
)

Consumindo o logger

Agora, você pode usar o objeto logger para registrar de onde for necessário em sua política:

func validate(payload []byte) ([]byte, error) {
    // ...
    logger.Info("validating request")
    // ...
}

Você pode adicionar logging estruturado:

func validate(payload []byte) ([]byte, error) {
    // ...
    logger.WarnWithFields("logging something important", func(e onelog.Entry) {
        e.String("one_field", "a value")
        e.String("another_field", "another value")
    })
    // ...
}

Você pode consultar onelog documentação para mais informações.

O logging da política vai para o avaliador de políticas (por exemplo, kwctl ou policy-server), e eles registram em nome da política. Eles usam mecanismos que são interoperáveis com outros componentes que permitem rastreamento distribuído, como Jaeger.