#
Elevator Logging Utility
Elevators provides a built-in logging system through the Elevators class, designed to make structured console output easier and more readable.
#
Basic Logging
Use Elevators.log(String message) to print a message to the console prefixed under the plugin’s name.
Elevators.log("Hello, how are you doing?");
Console output:
[Elevators] Hello, how are you doing?
#
Log Stack: Indentation
You can create hierarchical/indented logging output using a stack-style logging system.
pushLog() and popLog()
Elevators.log("Hello");
Elevators.pushLog();
Elevators.log("This is indented");
Elevators.pushLog();
Elevators.log("This is indented even more");
Elevators.popLog();
Elevators.popLog();
Elevators.log("Back to normal");
Console output:
[Elevators] Hello
[Elevators] This is indented
[Elevators] This is indented even more
[Elevators] Back to normal
#
Holding Logs Temporarily
You can delay output to the console using the hold/release system.
holdLog() and releaseLog()
Elevators.holdLog();
Elevators.log("Message 1");
Elevators.log("Message 2");
Elevators.releaseLog();
pushAndHoldLog() is a shortcut for combining pushLog() and holdLog().
popLog() will call releaseLog() if the current stack is being withheld.
Output appears after releaseLog() is called and will respect the current contexts indention.
#
Tracking Hold Durations
popLog() and releaseLog will both return an instance of LogReleaseData which details the logs and how long a section of logs took in milliseconds:
Elevators.log("Starting process");
Elevators.pushAndHoldLog();
Elevators.log("This is indented");
// some process here...
Elevators.log("This is also indented");
LogReleaseData logData = Elevators.popLog();
Elevators.log("Process completed in " + logData.getElapsedTime() + "ms");
Console output:
[Elevators] Starting process
[Elevators] This is indented
[Elevators] This is also indented
[Elevators] Process completed in 0ms
You can use the Consumer overloads found in the two methods to execute code prior to the logging being sent in console:
Elevators.pushAndHoldLog();
Elevators.log("This is indented");
// some process here...
Elevators.log("This is also indented");
Elevators.popLog((logData) -> {
Elevators.log("Process completed in " + logData.getElapsedTime() + "ms:");
});
Console output:
[Elevators] Process completed in 0ms:
[Elevators] This is indented
[Elevators] This is also indented
#
LogReleaseData
The LogReleaseData object contains the following methods:
getLogs()– a list of all held log messages. This will contain tabulated indention characters, so you may need to trim depending on your use.getElapsedTime()– time in milliseconds since the stack was held. If the stack was never held, this will return 0.