All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.dharwin.common.tools.cli.api.console.Console Maven / Gradle / Ivy

The newest version!
package net.dharwin.common.tools.cli.api.console;

import java.io.PrintStream;

/**
 * A poor implementation of a watered-down logging/printing api.
 * This basically just handles the printing of messages to System.out/err and
 * suppressing log levels below a threshold.
 * @author Sean
 *
 */
public class Console {
	
	/** The currently set output level. **/
	private static ConsoleLevel _level = ConsoleLevel.INFO;
	
	/** Whether or not to prefix each output message with the log level. **/
	private static boolean _printLogLevel = false;
	
	/**
	 * Set whether or not to print the log level before each message.
	 * @param print
	 */
	public static void setPrintLogLevel(boolean print) {
		_printLogLevel = print;
	}
	
	/**
	 * Set the log level threshold.
	 * @param level
	 */
	public static void setLevel(ConsoleLevel level) {
		_level = level;
	}
	
	/**
	 * Print the given message at the given level.
	 * @param level The level associated with the message.
	 * @param message The message.
	 */
	public static void print(ConsoleLevel level, String message) {
		if (level.compareTo(_level) <= 0) {
			if (_printLogLevel) {
				level.getStream().println(level.name() + ": " + message);
			}
			else {
				level.getStream().println(message);
			}
			level.getStream().flush();
		}
	}
	
	/**
	 * Print the message to the SEVERE level.
	 * @param message The message to print.
	 */
	public static void severe(String message) {
		print(ConsoleLevel.SEVERE, message);
	}
	
	/**
	 * Print the message to the ERROR level.
	 * @param message The message to print.
	 */
	public static void error(String message) {
		print(ConsoleLevel.ERROR, message);
	}
	
	/**
	 * Print the message to the WARN level.
	 * @param message The message to print.
	 */
	public static void warn(String message) {
		print(ConsoleLevel.WARN, message);
	}
	
	/**
	 * Print the message to the INFO level.
	 * @param message The message to print.
	 */
	public static void info(String message) {
		print(ConsoleLevel.INFO, message);
	}
	
	/**
	 * Print the message to the DEBUG level.
	 * @param message The message to print.
	 */
	public static void debug(String message) {
		print(ConsoleLevel.DEBUG, message);
	}
	
	/**
	 * Print the message to the SUPERFINE level.
	 * @param message The message to print.
	 */
	public static void superFine(String message) {
		print(ConsoleLevel.SUPERFINE, message);
	}
	
	
	/**
	 * Console levels in order from most critical to least.
	 * @author Sean
	 *
	 */
	public enum ConsoleLevel {
		SEVERE(System.err),
		ERROR(System.err),
		WARN(System.out),
		INFO(System.out),
		DEBUG(System.out),
		SUPERFINE(System.out);
		
		private PrintStream _stream;
		
		private ConsoleLevel(PrintStream stream) {
			_stream = stream;
		}
		
		public PrintStream getStream() {
			return _stream;
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy