From eb31c4d83c6d6d3021d5608c03a3558c8ff409b8 Mon Sep 17 00:00:00 2001 From: Christopher Date: Sat, 6 Apr 2024 15:43:38 +0200 Subject: [PATCH] feat(imports/logger): add fivemanage as logging option (#536) --- imports/logger/server.lua | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/imports/logger/server.lua b/imports/logger/server.lua index b8a3231..460165a 100644 --- a/imports/logger/server.lua +++ b/imports/logger/server.lua @@ -84,6 +84,53 @@ local function formatTags(source, tags) return tags end +if service == 'fivemanage' then + local key = GetConvar('fivemanage:key', '') + + if key ~= '' then + local endpoint = 'https://api.fivemanage.com/api/logs/batch' + + local headers = { + ['Content-Type'] = 'application/json', + ['Authorization'] = key, + ['User-Agent'] = 'ox_lib' + } + + function lib.logger(source, event, message, ...) + if not buffer then + buffer = {} + + SetTimeout(500, function() + PerformHttpRequest(endpoint, function(status, _, _, response) + if status ~= 200 then + if type(response) == 'string' then + response = json.decode(response) or response + badResponse(endpoint, status, response) + end + end + end, 'POST', json.encode(buffer), headers) + + buffer = nil + bufferSize = 0 + end) + end + + bufferSize += 1 + buffer[bufferSize] = { + level = "info", + message = message, + resource = cache.resource, + metadata = { + hostname = hostname, + service = event, + source = source, + tags = formatTags(source, ... and string.strjoin(',', string.tostringall(...)) or nil), + } + } + end + end +end + if service == 'datadog' then local key = GetConvar('datadog:key', ''):gsub("[\'\"]", '')