Logging
El módulo logger escribe mensajes estructurados en los niveles debug, info, warn y error.
Esta es una referencia de API. Cada fragmento es una operación de logging aislada y supone un contexto de ejecución con la configuración de logger deseada.
Las llamadas de logging no devuelven valores. Cuando el contexto de ejecución los proporciona, cada llamada también añade el pid del proceso y la location de origen derivada del frame actual.
Carga
local logger = require("logger")
Niveles de Log
logger:debug
Escribe un mensaje de nivel debug.
logger:debug("message", {key = "value"})
logger:info
Escribe un mensaje de nivel info.
logger:info("message", {key = "value"})
logger:warn
Escribe un mensaje de nivel warning.
logger:warn("message", {key = "value"})
logger:error
Escribe un mensaje de nivel error.
logger:error("message", {key = "value"})
Los cuatro métodos de nivel de log aceptan los mismos parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
message |
string | Mensaje de log |
fields |
table? | Pares clave-valor contextuales |
Solo las claves string se convierten en nombres de campos. Strings, números, enteros, booleanos, errores y valores Lua estructurados se convierten en campos de log; las claves que no son strings se ignoran.
En logger:error, un campo llamado error se emite como campo de error y se elimina de la tabla proporcionada antes de procesar los demás campos. No reutilice esa tabla si necesita conservar la entrada error.
Personalizacion de Logger
logger:with
Crear un logger hijo con campos persistentes.
local function request_logger(request_id)
return logger:with({request_id = request_id})
end
request_logger("req-123"):info("message")
| Parámetro | Tipo | Descripción |
|---|---|---|
fields |
table | Campos a adjuntar a todos los logs |
Devuelve: Logger
El logger original no cambia. Los loggers hijos pueden encadenarse con llamadas adicionales a with y named.
logger:named
Crear un logger hijo nombrado.
local named = logger:named("auth")
named:info("message")
| Parámetro | Tipo | Descripción |
|---|---|---|
name |
string | Nombre del logger |
Devuelve: Logger
Un nombre vacío genera un error de argumento Lua. No se devuelve como un valor estructurado errors.INVALID.
logger:named("") lanza un error de argumento de Lua (name cannot be empty) en lugar de devolver un valor de error. Los métodos de logging no devuelven nada.
Consulte Manejo de Errores para trabajar con errores.