95 lines
2.7 KiB
Java
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();
|
|
}
|
|
}
|
|
|
|
}
|