JSON Logging Take Two (#73604)

## About The Pull Request

Converts all logging, excluding perf and investigate, to json.
I focused on making the system as easy to use and as easy to add new
categories as possible.

Due to issues related to logging to world at global creation logger is
now a byond real, which is created directly before Master

Log categories support versioning, secret flagging, and sub-category
filtering. Although all of this is entirely optional for coders.
If you ever want to add a new category and use it, all you need to do is
make the barebones category datum and the define.
I've kept existing procs such as log_game, and simply turned them into a
wrapper for Logger.Log(xxx, ...)
## Why It's Good For The Game

Makes processing and filtering logs much easier in the future, while
only minimally downgrading log crawling experience.
I am also working on a log viewer frontend for admin usage however that
will take a little bit longer to finish up.
Also makes special logging and data tracking much easier thanks to a
data list processing implementation and handling
## Changelog
🆑
server: All logs are now formatted in json, excluding perf and
investigations
/🆑

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
Zephyr
2023-05-22 14:51:00 +12:00
committed by GitHub
co-authored by tattle Kyle Spier-Swenson GoldenAlpharex
parent 3df5d3b42b
commit fbec9c14e9
49 changed files with 1055 additions and 353 deletions
@@ -0,0 +1,26 @@
/datum/log_category/admin
category = LOG_CATEGORY_ADMIN
config_flag = /datum/config_entry/flag/log_admin
/datum/log_category/admin_dsay
category = LOG_CATEGORY_ADMIN_DSAY
master_category = /datum/log_category/admin
config_flag = /datum/config_entry/flag/log_admin
/datum/log_category/admin_circuit
category = LOG_CATEGORY_ADMIN_CIRCUIT
master_category = /datum/log_category/admin
config_flag = /datum/config_entry/flag/log_admin
// private categories //
/datum/log_category/admin_private
category = LOG_CATEGORY_ADMIN_PRIVATE
config_flag = /datum/config_entry/flag/log_admin
secret = TRUE
/datum/log_category/admin_asay
category = LOG_CATEGORY_ADMIN_PRIVATE_ASAY
master_category = /datum/log_category/admin_private
config_flag = /datum/config_entry/flag/log_adminchat
secret = TRUE
@@ -0,0 +1,7 @@
/datum/log_category/game_compat
category = LOG_CATEGORY_COMPAT_GAME
master_category = /datum/log_category/game
config_flag = /datum/config_entry/flag/logging_compat_adminprivate
/datum/config_entry/flag/logging_compat_adminprivate
default = FALSE
@@ -0,0 +1,45 @@
/datum/log_category/debug
category = LOG_CATEGORY_DEBUG
/datum/log_category/debug_tgui
category = LOG_CATEGORY_DEBUG_TGUI
master_category = /datum/log_category/debug
/datum/log_category/debug_sql
category = LOG_CATEGORY_DEBUG_SQL
master_category = /datum/log_category/debug
/datum/log_category/debug_lua
category = LOG_CATEGORY_DEBUG_LUA
master_category = /datum/log_category/debug
/datum/log_category/debug_href
category = LOG_CATEGORY_DEBUG_HREF
master_category = /datum/log_category/debug
// This is not in the debug master category on purpose, do not add it
/datum/log_category/debug_runtime
category = LOG_CATEGORY_RUNTIME
internal_formatting = FALSE
/datum/log_category/debug_mapping
category = LOG_CATEGORY_DEBUG_MAPPING
master_category = /datum/log_category/debug
/datum/log_category/debug_job
category = LOG_CATEGORY_DEBUG_JOB
config_flag = /datum/config_entry/flag/log_job_debug
master_category = /datum/log_category/debug
/datum/log_category/debug_mobtag
category = LOG_CATEGORY_DEBUG_MOBTAG
master_category = /datum/log_category/debug
/datum/log_category/debug_asset
category = LOG_CATEGORY_DEBUG_ASSET
config_flag = /datum/config_entry/flag/log_asset
master_category = /datum/log_category/debug
/datum/log_category/debug_qdel
category = LOG_CATEGORY_DEBUG_QDEL
master_category = /datum/log_category/debug
@@ -0,0 +1,58 @@
/datum/log_category/game
category = LOG_CATEGORY_GAME
config_flag = /datum/config_entry/flag/log_game
/datum/log_category/game_vote
category = LOG_CATEGORY_GAME_VOTE
config_flag = /datum/config_entry/flag/log_vote
master_category = /datum/log_category/game
/datum/log_category/game_emote
category = LOG_CATEGORY_GAME_EMOTE
config_flag = /datum/config_entry/flag/log_emote
master_category = /datum/log_category/game
/datum/log_category/game_internet_request
category = LOG_CATEGORY_GAME_INTERNET_REQUEST
config_flag = /datum/config_entry/flag/log_internet_request
master_category = /datum/log_category/game
/datum/log_category/game_radio_emote
category = LOG_CATEGORY_GAME_RADIO_EMOTE
config_flag = /datum/config_entry/flag/log_emote
master_category = /datum/log_category/game
/datum/log_category/game_traitor
category = LOG_CATEGORY_GAME_TRAITOR
config_flag = /datum/config_entry/flag/log_traitor
master_category = /datum/log_category/game
/datum/log_category/game_topic
category = LOG_CATEGORY_GAME_TOPIC
config_flag = /datum/config_entry/flag/log_world_topic
master_category = /datum/log_category/game
/datum/log_category/game_say
category = LOG_CATEGORY_GAME_SAY
config_flag = /datum/config_entry/flag/log_say
master_category = /datum/log_category/game
/datum/log_category/game_whisper
category = LOG_CATEGORY_GAME_WHISPER
config_flag = /datum/config_entry/flag/log_whisper
master_category = /datum/log_category/game
/datum/log_category/game_ooc
category = LOG_CATEGORY_GAME_OOC
config_flag = /datum/config_entry/flag/log_ooc
master_category = /datum/log_category/game
/datum/log_category/game_prayer
category = LOG_CATEGORY_GAME_PRAYER
config_flag = /datum/config_entry/flag/log_prayer
master_category = /datum/log_category/game
/datum/log_category/game_access
category = LOG_CATEGORY_GAME_ACCESS
config_flag = /datum/config_entry/flag/log_access
master_category = /datum/log_category/game
@@ -0,0 +1,58 @@
/datum/log_category/virus
category = LOG_CATEGORY_VIRUS
config_flag = /datum/config_entry/flag/log_virus
/datum/log_category/tool
category = LOG_CATEGORY_TOOL
config_flag = /datum/config_entry/flag/log_tools
/datum/log_category/mecha
category = LOG_CATEGORY_MECHA
config_flag = /datum/config_entry/flag/log_mecha
/datum/log_category/silicon
category = LOG_CATEGORY_SILICON
config_flag = /datum/config_entry/flag/log_silicon
/datum/log_category/paper
category = LOG_CATEGORY_PAPER
/datum/log_category/attack
category = LOG_CATEGORY_ATTACK
config_flag = /datum/config_entry/flag/log_attack
/datum/log_category/economy
category = LOG_CATEGORY_ECONOMY
config_flag = /datum/config_entry/flag/log_econ
/datum/log_category/manifest
category = LOG_CATEGORY_MANIFEST
config_flag = /datum/config_entry/flag/log_manifest
/datum/log_category/shuttle
category = LOG_CATEGORY_SHUTTLE
config_flag = /datum/config_entry/flag/log_shuttle
/datum/log_category/supicious_login
category = LOG_CATEGORY_SUSPICIOUS_LOGIN
config_flag = /datum/config_entry/flag/log_suspicious_login
/datum/log_category/config
category = LOG_CATEGORY_CONFIG
/datum/log_category/filter
category = LOG_CATEGORY_FILTER
/datum/log_category/signal
category = LOG_CATEGORY_SIGNAL
/datum/log_category/dynamic
category = LOG_CATEGORY_DYNAMIC
/datum/log_category/telecomms
category = LOG_CATEGORY_TELECOMMS
config_flag = /datum/config_entry/flag/log_telecomms
/datum/log_category/speech_indicator
category = LOG_CATEGORY_SPEECH_INDICATOR
config_flag = /datum/config_entry/flag/log_speech_indicators
@@ -0,0 +1,11 @@
/datum/log_category/pda
category = LOG_CATEGORY_PDA
config_flag = /datum/config_entry/flag/log_pda
/datum/log_category/pda_chat
category = LOG_CATEGORY_PDA_CHAT
master_category = /datum/log_category/pda
/datum/log_category/pda_comment
category = LOG_CATEGORY_PDA_COMMENT
master_category = /datum/log_category/pda
@@ -0,0 +1,23 @@
/datum/log_category/uplink
category = LOG_CATEGORY_UPLINK
config_flag = /datum/config_entry/flag/log_uplink
/datum/log_category/uplink_malf
category = LOG_CATEGORY_UPLINK_MALF
config_flag = /datum/config_entry/flag/log_uplink
master_category = /datum/log_category/uplink
/datum/log_category/uplink_heretic
category = LOG_CATEGORY_UPLINK_HERETIC
config_flag = /datum/config_entry/flag/log_uplink
master_category = /datum/log_category/uplink
/datum/log_category/uplink_changeling
category = LOG_CATEGORY_UPLINK_CHANGELING
config_flag = /datum/config_entry/flag/log_uplink
master_category = /datum/log_category/uplink
/datum/log_category/uplink_spell
category = LOG_CATEGORY_UPLINK_SPELL
config_flag = /datum/config_entry/flag/log_uplink
master_category = /datum/log_category/uplink