module logging.formatters.ConsoleFormatter;

import std.datetime;
import std.string;
import logging.levels;
import logging.formatters.Formatter;

private enum string[LogLevel] LOGLEVEL_TO_COLOR =
[
	LogLevel.Error	: "\x1b[31;01m",
	LogLevel.Warning: "\x1b[33m",
	LogLevel.Info	: "",
	LogLevel.Debug	: "\x1b[02m",
	LogLevel.Trace	: "\x1b[02m"
];

class ConsoleFormatter : Formatter
{
	string format(LogLevel loglevel, string m, string func, size_t line, SysTime time, string msg, uint thread_id)
	{
		return "%s%s \x1b[02m@%s:%s\x1b[00m".format(
		LOGLEVEL_TO_COLOR[loglevel],
		msg,
		func,
		line
		);
	}
}