mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-22 08:01:06 +00:00
The C++ UDP logging library has been swapped out with a rustg implementation. The rustg library uses non-blocking IO mode, and hopefully has less trouble than the C++ one. Though we'll have to see. It should error when the call is supposed to block. The old library has been removed.
91 lines
2.7 KiB
Plaintext
91 lines
2.7 KiB
Plaintext
/**
|
|
* Copyright (c) 2017 "Werner Maisl"
|
|
*
|
|
* This file is part of Aurora.3
|
|
* Aurora.3 is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
/*
|
|
|
|
@===================================@
|
|
| |
|
|
| Guide to UDP Data Shipping |
|
|
| |
|
|
@===================================@
|
|
|
|
The prerequisite for using this is rustg compiled with the udp_shipper feature.
|
|
|
|
Rustg's rustg_udp_shipper_send function is used to send data.
|
|
*/
|
|
|
|
/**
|
|
* Sends data via UDP.
|
|
*
|
|
* addr must be formatted as "ip:port".
|
|
* data must be a string to be sent.
|
|
*/
|
|
/proc/send_udp_data(addr, data)
|
|
#ifdef RUST_G
|
|
# ifndef rustg_udp_shipper_send
|
|
# error rustg_udp_shipper_send macro is not defined for rustg.
|
|
# endif // rustg_udp_shipper_send
|
|
|
|
if (!addr || !data)
|
|
return "Not enough args."
|
|
|
|
. = rustg_udp_shipper_send(addr, data)
|
|
|
|
if (.)
|
|
error("UDP Shipper error: [.]")
|
|
|
|
#else
|
|
return
|
|
#endif // RUST_G
|
|
|
|
/proc/send_gelf_log(short_message="", long_message="", level = 5, category="", additional_data=list())
|
|
if (!config)
|
|
return "Configuration not loaded."
|
|
if (!config.log_gelf_enabled)
|
|
return "Gelf logging not enabled."
|
|
var/list/log_data = list()
|
|
log_data["version"] = "1.1"
|
|
log_data["host"] = world.name
|
|
log_data["short_message"] = html_encode(short_message)
|
|
log_data["long_message"] = html_encode(long_message)
|
|
log_data["level"] = level
|
|
log_data["_category"] = category
|
|
log_data["_game_id"] = game_id
|
|
|
|
log_data.Add(additional_data)
|
|
var/gelf_log = json_encode(log_data)
|
|
return send_udp_data(config.log_gelf_addr, gelf_log)
|
|
|
|
/obj/item/device/udp_debugger
|
|
name = "udp_debugger"
|
|
desc = "Used to debug UDP Data sent to the log server."
|
|
icon = 'icons/obj/hacktool.dmi'
|
|
icon_state = "hacktool-g"
|
|
force = 5.0
|
|
w_class = 2.0
|
|
throwforce = 5.0
|
|
throw_range = 15
|
|
throw_speed = 3
|
|
desc = "You can use this to debug sending udp logs to the log server"
|
|
|
|
/obj/item/device/udp_debugger/proc/raw(addr=config.log_gelf_addr, data="RAW Test String")
|
|
return send_udp_data(addr,data)
|
|
|
|
/obj/item/device/udp_debugger/proc/gelf(short_message="", long_message="", level = 1)
|
|
return send_gelf_log(short_message, long_message, level)
|