Home Reference Source

scripts/core/log.js

import Enum from 'es6-enum';

export var ELogContext = Enum('None', 'All', 'Interaction2d', 'Item', 'Wall', 'Room');
export var ELogLevel = Enum('Information', 'Warning', 'Error', 'Fatal', 'Debug');
/** The current log context. To be set when initializing the Application. */
export var logContext = ELogContext.None;

/** Pre-check if logging for specified context and/or level is enabled.
 * This may be used to avoid compilation of complex logs.
 * @param context The log context to be verified.
 * @param level The log level to be verified.
 * @returns If this context/levels is currently logged.
 */
export function isLogging(context, level) 
{
	return logContext === ELogContext.All || logContext == context || level === ELogLevel.Warning || level === ELogLevel.Error || level === ELogLevel.Fatal;
}

/** Log the passed message in the context and with given level.
 * @param context The context in which the message should be logged.
 * @param level The level of the message.
 * @param message The messages to be logged. 
 */
export function log(context, level, message) 
{
	if (isLogging(context, level) === false)
	{
		return;
	}
	var tPrefix = '';
	switch (level) 
	{
	case ELogLevel.Information:
		tPrefix = '[INFO_] ';
		break;
	case ELogLevel.Warning:
		tPrefix = '[WARNG] ';
		break;
	case ELogLevel.Error:
		tPrefix = '[ERROR] ';
		break;
	case ELogLevel.Fatal:
		tPrefix = '[FATAL] ';
		break;
	case ELogLevel.Debug:
		tPrefix = '[DEBUG] ';
		break;
	}
	console.log(tPrefix + message);
}