"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você pode implementar o log MDC no GoLang?

Como você pode implementar o log MDC no GoLang?

Publicado em 23/12/2024
Navegar:465

How can you implement MDC logging in GoLang?

Logging MDC no GoLang

O log MDC do Java depende do armazenamento local de thread, que não está disponível no GoLang. No entanto, uma funcionalidade semelhante pode ser alcançada encadeando um Contexto através da pilha.

Java MDC depende do armazenamento local do encadeamento, algo que Go não possui. O mais próximo é encadear um contexto em sua pilha, o que está se tornando uma prática comum em bibliotecas Go.

Uma maneira de implementar isso é por meio de um pacote de middleware que adiciona um ID de solicitação ao contexto de uma solicitação da web . Esse ID pode então ser recuperado e usado em toda a pilha para fins de registro.

Aqui está um exemplo simples de um pacote de middleware:

req = req.WithContext(context.WithValue(req.Context(), "requestId", ID))

O ID da solicitação pode então ser recuperado using:

ctx.Value("requestId")

Este valor pode ser usado em uma função de logger personalizada:

func logStuff(ctx context.Context, msg string) {
    log.Println(ctx.Value("requestId"), msg) // call stdlib logger
}

Essa abordagem permite fácil rastreamento de solicitações simultâneas adicionando IDs exclusivos a todos os logs do servidor. Existem outras implementações possíveis, mas esta fornece uma maneira direta de obter registro semelhante ao MDC no GoLang.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3