Documentación / Utiliser les logs sur le serveur

Utiliser les logs sur le serveur

Cómo registrar eventos desde tus scripts FiveM y consultarlos en el panel.

Adictos_WebLogs centraliza los eventos de tu servidor. Muchos logs se generan automáticamente (inventario ox, conexiones, vehículos…), pero puedes registrar los tuyos desde cualquier script con los exports del recurso.

Logs automáticos de ox_inventory

Con la integración ox_lib, los movimientos de inventario llegan solos al panel cuando Adictos_WebLogs está iniciado. WebLogs los interpreta (taquilla, maletero, dar objeto…) y los agrupa; no hace falta código extra en tus scripts.

ox_inventory (lib.logger)
    │
    ▼
ox_lib/imports/logger/server.lua  ← bloque pegado al final
    │
    ▼
Adictos_WebLogs (buffer → panel)
    │
    ▼
Panel web (procesamiento + vista Logs)

Registrar un log desde otro script

Desde el lado servidor de cualquier recurso, con Adictos_WebLogs arrancado. Hay dos formas habituales:

Log() — tú indicas los datos del jugador

Útil cuando ya tienes xPlayer o quieres controlar licencia, nombre IC y OOC a mano. Comprueba que el recurso esté activo antes de llamar:

if GetResourceState('Adictos_WebLogs') == 'started' then
    exports['Adictos_WebLogs']:Log('inventory', 'item_give', {
        license = xPlayer.identifier,   -- sin prefijo license:
        playerName = xPlayer.getName(),
        playerOOC = GetPlayerName(source),
        details = 'Entregó 5x pan',
        severity = 'INFO',              -- DEBUG | INFO | WARNING | ERROR | CRITICAL
    }, true)  -- true = enviar a Discord si la categoría tiene webhook
end

LogPlayer() — el recurso rellena al jugador

Pasa el source del jugador y WebLogs obtiene licencia y nombres automáticamente. Menos código cuando el evento viene de un jugador conectado:

exports['Adictos_WebLogs']:LogPlayer(source, 'jobs', 'duty_on', {
    details = 'Entró de servicio',
}, true)

Categorías

Cada log pertenece a una categoría: agrupa eventos en el panel (vista GENERAL, filtros, perfil del jugador) y, si quieres, en un canal de Discord distinto. La llamada Log(categoría, acción, datos) usa dos identificadores distintos:

  • Categoría (1.er parámetro) — tipo de evento a nivel servidor: inventory, vehicles, jobs, anticheat… Debe existir en el panel y estar activa.
  • Acción (2.º parámetro) — qué pasó dentro de esa categoría: item_give, duty_on, vehicle_delete… Lo defines tú en el script; sirve para filtrar y buscar.

Las categorías se crean en Mis servidores → Categorías. En la tabla, la columna Categoría es el identificador técnico (texto corto en minúsculas, sin espacios: inventory, vehicles…). Ese mismo texto es el 1.er parámetro de Log() — tiene que coincidir letra por letra. El nombre de la categoría es solo para mostrar en el panel; el webhook es opcional.

-- Ejemplo: categoría 'jobs', acción 'duty_on'
exports['Adictos_WebLogs']:Log('jobs', 'duty_on', { details = 'Entró de servicio' }, true)

-- Ver qué categorías tiene tu servidor ahora mismo
for _, categoria in ipairs(exports['Adictos_WebLogs']:GetCategoryIds()) do
    print(categoria)
end

local meta = exports['Adictos_WebLogs']:GetCategoryMeta('inventory')
-- meta.name, meta.icon, meta.color
Si el identificador de categoría no existe en el panel o está desactivado, el log puede no mostrarse donde esperas o caer en general. Créala y actívala antes de usarla en tus scripts.

Campos útiles del log

CampoDescripción
licenseLicencia del jugador (hex, sin license:)
playerName / playerOOCNombre IC y nombre de Steam
targetLicense / targetNameOtro jugador implicado
details / reasonTexto descriptivo del evento
itemsTabla de items (nombre, cantidad…)
amountCantidad numérica (dinero, etc.)
locationCoordenadas o zona
severityDEBUG, INFO, WARNING, ERROR o CRITICAL
videoDuración en ms para grabar pantalla del jugador (server_id requerido)

Helpers y eventos alternativos

Para conectar otros recursos de forma cómoda existe shared/integration.lua. La guía completa (eventos, vehículos, hook de borrado) está en API de integración.

-- Resumen rápido (ver guía completa en /documentation/integration-api)
shared_scripts { '@Adictos_WebLogs/shared/integration.lua' }

AdictosWebLogs.logPlayer(source, 'jobs', 'duty_on', { details = 'Entró de servicio' })

Flujo de datos

Tu script (export Log)
    │
    ▼
Adictos_WebLogs (buffer en memoria)
    │ envío periódico al panel
    ▼
Panel web (base de datos)
    │
    ├─► Vista Logs / perfil jugador
    └─► Discord (si la categoría tiene webhook)

Dónde ver los logs en el panel

VistaUso
Logs → GENERALTodos los eventos del servidor por categoría
Perfil de jugadorHistorial de un jugador concreto
Búsqueda IAPreguntas en lenguaje natural (si tu rol lo permite)
La conexión FiveM → panel se valida por la IP registrada en Mis servidores. No necesitas API key en el Lua.