"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 > Middleware AccessLog para Iris

Middleware AccessLog para Iris

Publicado em 2024-11-03
Navegar:153

AccessLog Middleware for Iris

O middleware accesslog para a estrutura da web Iris fornece registro detalhado para solicitações HTTP recebidas. Este middleware é altamente configurável e pode registrar vários aspectos da solicitação e resposta, incluindo campos personalizados.

Características

  • Registra detalhes de solicitação e resposta.
  • Suporta vários formatos de saída (JSON, CSV, modelos personalizados).
  • Pode registrar em vários destinos (arquivos, stdout, etc.).
  • Suporte para registro assíncrono.
  • Campos de registro personalizáveis.
  • Middleware pode ser aplicado condicionalmente.

Instalação

Para usar o middleware accesslog, você precisa importá-lo em seu aplicativo Iris:

import (
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/accesslog"
)

Uso Básico

Aqui está um exemplo básico de como usar o middleware accesslog em uma aplicação Iris:

package main

import (
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/accesslog"
)

func makeAccessLog() *accesslog.AccessLog {
    ac := accesslog.File("./access.log")

    ac.Delim = '|'
    ac.TimeFormat = "2006-01-02 15:04:05"
    ac.Async = false
    ac.IP = true
    ac.BytesReceivedBody = true
    ac.BytesSentBody = true
    ac.BytesReceived = false
    ac.BytesSent = false
    ac.RequestBody = true
    ac.ResponseBody = false
    ac.KeepMultiLineError = true
    ac.PanicLog = accesslog.LogHandler

    ac.SetFormatter(&accesslog.JSON{
        Indent:    "  ",
        HumanTime: true,
    })

    return ac
}

func main() {
    ac := makeAccessLog()
    defer ac.Close()

    app := iris.New()
    app.UseRouter(ac.Handler)

    app.Get("/", func(ctx iris.Context) {
        ctx.WriteString("OK")
    })

    app.Listen(":8080")
}

Opções de configuração

Destino de saída

Você pode definir o destino de saída dos logs usando as funções Arquivo ou Novo:

ac := accesslog.File("./access.log")
// or
ac := accesslog.New(os.Stdout)

Formato de registro

O formato de registro padrão é:

Time|Latency|Code|Method|Path|IP|Path Params Query Fields|Bytes Received|Bytes Sent|Request|Response|

Você pode personalizar o formato do log usando diferentes formatadores:

Formatador JSON

ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})

Formatador CSV

ac.SetFormatter(&accesslog.CSV{})

Formatador de modelo personalizado

ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})

Campos personalizados

Você pode adicionar campos personalizados às entradas de registro:

ac.AddFields(func(ctx iris.Context, f *accesslog.Fields) {
    for k, v := range ctx.Request().Header {
        value := strings.Join(v, ", ")
        f.Set("request.header." k, value)
    }
})

Registro assíncrono

Ative o registro assíncrono para melhorar o desempenho:

ac.Async = true

Registro Condicional

Você pode ignorar o registro de rotas ou condições específicas:

app.UseRouter(accesslog.SkipHandler)

Uso Avançado

Registrando em vários destinos

Você pode fazer login em vários destinos usando io.MultiWriter:

ac.SetOutput(io.MultiWriter(os.Stdout, accesslog.File("./access.log")))

Relógio personalizado

Você pode definir um relógio personalizado para os registros de data e hora do log, útil para testes:

ac.Clock = accesslog.TClock(time.Now())

Integração de Middleware

Integre o middleware do accesslog com outros middlewares:

app.UseRouter(ac.Handler)
app.UseRouter(otherMiddleware)

Exemplos

Registrar solicitações em um arquivo JSON

ac := accesslog.File("access_log.json")
ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})
app.UseRouter(ac.Handler)

Usando rotação de log

Consulte o exemplo de rotação de log para obter mais detalhes.

Campos e modelo personalizados

Consulte os campos personalizados e o exemplo de modelo para obter mais detalhes.

Ouvir e renderizar logs para um cliente

Consulte o exemplo do agente de log para obter mais detalhes.

Conclusão

O middleware accesslog para Iris é uma ferramenta poderosa para registrar solicitações e respostas HTTP. Com suas opções flexíveis de configuração e suporte para campos e formatos personalizados, ele pode ser adaptado para atender às necessidades de qualquer aplicação.

Para obter mais exemplos e uso detalhado, consulte a documentação oficial do Iris.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/kataras/accesslog-middleware-for-iris-4lhm?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
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