Renderer/src/main/java/electrosphere/logger/Logger.java
2024-07-02 16:14:05 -04:00

95 lines
2.7 KiB
Java

package electrosphere.logger;
import org.graalvm.polyglot.HostAccess.Export;
/**
* A channel for logging messages
*/
public class Logger {
/**
* The different logging levels
*/
public enum LogLevel {
LOOP_DEBUG, //this should be used for debugging messages that are executed very rapidly/every frame
DEBUG,
INFO,
WARNING,
ERROR,
}
//the level of this log
LogLevel level;
/**
* Creates a logger channel
* @param level The level of message to report on this channel
*/
public Logger(LogLevel level){
this.level = level;
}
/**
* Logs a loop debug message.
* This should be used for debugging messages that are executed very rapidly/every frame
* @param message The message to report
*/
public void DEBUG_LOOP(String message){
if(level == LogLevel.LOOP_DEBUG){
System.out.println(message);
}
}
/**
* Logs a debug message.
* This should be used for debugging messages that are executed on a given condition that won't necessarily be every loop (ie all network messages)
* @param message The message to report
*/
public void DEBUG(String message){
if(level == LogLevel.LOOP_DEBUG || level == LogLevel.DEBUG){
System.out.println(message);
}
}
/**
* Logs an info message.
* This should be used for messages that would have interest to someone running a server (ie specific network messages, account creation, etc)
* @param message The message to report
*/
@Export
public void INFO(String message){
if(level == LogLevel.LOOP_DEBUG || level == LogLevel.DEBUG || level == LogLevel.INFO){
System.out.println(message);
}
}
/**
* Logs a warning message.
* This should be used for reporting events that happen in the engine that are concerning but don't mean the engine has failed to execute (ie a texture failed to load)
* @param message The message to report
*/
@Export
public void WARNING(String message){
if(level == LogLevel.LOOP_DEBUG || level == LogLevel.DEBUG || level == LogLevel.INFO || level == LogLevel.WARNING){
System.out.println(message);
}
}
/**
* Logs an error message.
* This should be used every time we throw any kind of error in the engine
* @param message The message to report
*/
public void ERROR(String message, Exception e){
if(level == LogLevel.LOOP_DEBUG || level == LogLevel.DEBUG || level == LogLevel.INFO || level == LogLevel.WARNING || level == LogLevel.ERROR){
System.err.println(message);
e.printStackTrace();
}
}
}