"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Middleware AccessLog para Iris

Middleware AccessLog para Iris

Publicado el 2024-11-03
Navegar:460

AccessLog Middleware for Iris

El middleware de registro de acceso para el marco web Iris proporciona un registro detallado de las solicitudes HTTP entrantes. Este middleware es altamente configurable y puede registrar varios aspectos de la solicitud y la respuesta, incluidos campos personalizados.

Características

  • Registra los detalles de la solicitud y la respuesta.
  • Admite múltiples formatos de salida (JSON, CSV, plantillas personalizadas).
  • Puede iniciar sesión en múltiples destinos (archivos, salida estándar, etc.).
  • Soporte de registro asincrónico.
  • Campos de registro personalizables.
  • El middleware se puede aplicar condicionalmente.

Instalación

Para utilizar el middleware de registro de acceso, debe importarlo en su aplicación Iris:

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

Uso básico

Aquí hay un ejemplo básico de cómo utilizar el middleware de registro de acceso en una aplicación 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")
}

Opciones de configuración

Destino de salida

Puedes configurar el destino de salida de los registros usando las funciones Archivo o Nuevo:

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

Formato de registro

El formato de registro predeterminado es:

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

Puedes personalizar el formato de registro usando diferentes formateadores:

Formateador JSON

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

Formateador CSV

ac.SetFormatter(&accesslog.CSV{})

Formateador de plantillas personalizadas

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

Campos personalizados

Puedes agregar campos personalizados a las entradas del 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 asincrónico

Habilite el registro asincrónico para mejorar el rendimiento:

ac.Async = true

Registro condicional

Puedes omitir el registro para rutas o condiciones específicas:

app.UseRouter(accesslog.SkipHandler)

Uso avanzado

Registro en múltiples destinos

Puedes iniciar sesión en múltiples destinos usando io.MultiWriter:

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

Reloj personalizado

Puedes configurar un reloj personalizado para las marcas de tiempo de registro, útil para realizar pruebas:

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

Integración de software intermedio

Integrar el middleware de registro de acceso con otros middlewares:

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

Ejemplos

Solicitudes de registro en un archivo JSON

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

Usando la rotación de registros

Consulte el ejemplo de rotación de registros para obtener más detalles.

Campos personalizados y plantilla

Consulta los campos personalizados y el ejemplo de plantilla para obtener más detalles.

Escuchar y renderizar registros a un cliente

Consulte el ejemplo del intermediario de registros para obtener más detalles.

Conclusión

El middleware de registro de acceso para Iris es una poderosa herramienta para registrar solicitudes y respuestas HTTP. Con sus opciones de configuración flexibles y compatibilidad con campos y formatos personalizados, se puede adaptar para satisfacer las necesidades de cualquier aplicación.

Para obtener más ejemplos y uso detallado, consulte la documentación oficial de Iris.

Declaración de liberación Este artículo se reproduce en: https://dev.to/kataras/accesslog-middleware-for-iris-4lhm?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3