dlog/source/dlog/defaults.d

72 lines
1.5 KiB
D
Raw Normal View History

2021-12-23 13:14:51 +00:00
/**
* Includes defaults such as the DefaultLogger
*/
2021-12-23 13:16:31 +00:00
module dlog.defaults;
2021-12-23 13:14:51 +00:00
2021-12-23 10:14:36 +00:00
import dlog.core : Logger;
import dlog.transform : MessageTransform;
import dlog.context : Context, CompilationInfo;
import std.conv : to;
2021-12-23 10:14:36 +00:00
/**
* DefaultLogger
*
* The default logger logs to standard output (fd 0)
*/
public final class DefaultLogger : Logger
{
this(string multiArgJoiner = " ")
2021-12-23 10:14:36 +00:00
{
/* Use the DefaultTransform */
super(multiArgJoiner);
2021-12-23 10:14:36 +00:00
}
protected override void logImpl(string message)
{
import std.stdio : write;
write(message);
}
}
/**
* DefaultTransform
*
* Provides a transformation of the kind
*
* [date+time] (srcFile:lineNumber): message `\n`
*/
public final class DefaultTransform : MessageTransform
{
/**
* Performs the default transformation
*
* Params:
* text = text input to transform
* context = the context (if any)
* Returns: the transformed text
*/
public override string transform(string text, Context ctx)
{
/* Extract the context */
string[] context = ctx.getLineInfo().toArray();
string message;
/* Date and time */
import std.datetime.systime : Clock, SysTime;
SysTime currTime = Clock.currTime();
import std.conv : to;
string timestamp = to!(string)(currTime);
message = "["~timestamp~"]";
/* Module information */
message = message ~ "\t(";
message = message ~ context[1]~":"~context[2];
message = message ~ "): "~text;
/* Add trailing newline */
message = message ~ '\n';
return message;
}
}