Affected files: .obsidian/workspace.json Management/Development and Configuration/Datapack/Logging.md
2.2 KiB
| title | draft |
|---|---|
| Logging | false |
Usage
Log Levels
This module has 5 log levels:
FATAL: (5) Indicates that at least an entire module will need to shut down. Generally indicates the likelihood of data corruption.ERROR: (4) The requested operation could not be completed, or some other problem that prevents necessary or requested functions from working as intended.WARNING: (3) Something has or may have gone wrong, but nothing has been prevented from functioning. Warnings should be investigated, but do not require immediate action.INFO: (2) Informational log ("Did this thing", "Started this process"). Shouldn't be too detailed.DEBUG: (1) Granular play-by-play useful for troubleshooting errors. More likely to include detailedbody.
By default, only levels 3 and up will be output. Debug logging, which displays all levels, can be manually toggled in-game with function ferdinland:logger/toggle.
Each log level has an associated test function which will output:
[<LOG_LEVEL>]: (logger) This is a test
The functions are:
ferdinland:logger/test_fatalferdinland:logger/test_errorferdinland:logger/test_warningferdinland:logger/test_infoferdinland:logger/test_debug
Syntax
The module uses the following syntax:
logger(type, caller, message, body)
type takes an integer from 1 to 5, corresponding to the associated log level.
caller takes an unquoted string. This should reflect the function triggering the log message: module.path.to.function.
message takes a quoted string or an NBT storage location. NBT storage should be in standard JMC format (::path.to.element). Only paths beginning with :: with be processed as storages. @e[tag=entity]::path.to.element will be processed as a string.
The content of message will be output in a say command, and will be visible in the server console.
body takes a tellraw object. It will be output in the command tellraw @ <body>.
Configuring
The log level is set to 3 by default. This can be changed manually in game with the command where <int> is replaced with the desired log level:
scoreboard players set $log_level __variable__ <int>