mirror of https://github.com/deavmi/dlog.git
Logger
- Added missing header comment for the consructor for `Logger` - Implemented `error(TextType...)(TextType)`
This commit is contained in:
parent
16459b2e4d
commit
70dc9c0449
|
@ -9,7 +9,7 @@ import std.conv : to;
|
||||||
import std.range : join;
|
import std.range : join;
|
||||||
import dlog.transform : MessageTransform;
|
import dlog.transform : MessageTransform;
|
||||||
import dlog.defaults;
|
import dlog.defaults;
|
||||||
import dlog.context : Context, CompilationInfo;
|
import dlog.context : Context, CompilationInfo, Level;
|
||||||
import dlog.utilities : flatten;
|
import dlog.utilities : flatten;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,19 +25,25 @@ public class Logger
|
||||||
/* The multiple argument joiner */
|
/* The multiple argument joiner */
|
||||||
private string multiArgJoiner;
|
private string multiArgJoiner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new Logger with the default
|
* Constructs a new Logger with the default
|
||||||
* MessageTransform, see TODO (ref module)
|
* MessageTransform
|
||||||
*/
|
*
|
||||||
|
* Params:
|
||||||
|
* multiArgJoiner = optional joiner for segmented prints (default is " ")
|
||||||
|
*/
|
||||||
this(string multiArgJoiner = " ")
|
this(string multiArgJoiner = " ")
|
||||||
{
|
{
|
||||||
this(new DefaultTransform(), multiArgJoiner);
|
this(new DefaultTransform(), multiArgJoiner);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new Logger with the given
|
* Constructs a new Logger with the provided
|
||||||
* MessageTransform
|
* custom message transform
|
||||||
*/
|
* Params:
|
||||||
|
* messageTransform = the message transform to use
|
||||||
|
* multiArgJoiner = optional joiner for segmented prints (default is " ")
|
||||||
|
*/
|
||||||
this(MessageTransform messageTransform, string multiArgJoiner = " ")
|
this(MessageTransform messageTransform, string multiArgJoiner = " ")
|
||||||
{
|
{
|
||||||
this.messageTransform = messageTransform;
|
this.messageTransform = messageTransform;
|
||||||
|
@ -154,7 +160,50 @@ public class Logger
|
||||||
logImpl(transformedMesage);
|
logImpl(transformedMesage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs using the default context an arbitrary amount of arguments
|
||||||
|
* specifically setting the context's level to ERROR
|
||||||
|
*
|
||||||
|
* Params:
|
||||||
|
* segments = the arbitrary argumnets (alias sequence)
|
||||||
|
* __FILE_FULL_PATH__ = compile time usage file
|
||||||
|
* __FILE__ = compile time usage file (relative)
|
||||||
|
* __LINE__ = compile time usage line number
|
||||||
|
* __MODULE__ = compile time usage module
|
||||||
|
* __FUNCTION__ = compile time usage function
|
||||||
|
* __PRETTY_FUNCTION__ = compile time usage function (pretty)
|
||||||
|
*/
|
||||||
|
public final void error(TextType...)(TextType segments,
|
||||||
|
string c1 = __FILE_FULL_PATH__,
|
||||||
|
string c2 = __FILE__, ulong c3 = __LINE__,
|
||||||
|
string c4 = __MODULE__, string c5 = __FUNCTION__,
|
||||||
|
string c6 = __PRETTY_FUNCTION__)
|
||||||
|
{
|
||||||
|
/* Use the default context `Context` */
|
||||||
|
Context defaultContext = new Context();
|
||||||
|
|
||||||
|
/* Build up the line information */
|
||||||
|
CompilationInfo compilationInfo = CompilationInfo(c1, c2, c3, c4, c5, c6);
|
||||||
|
|
||||||
|
/* Set the line information in the context */
|
||||||
|
defaultContext.setLineInfo(compilationInfo);
|
||||||
|
|
||||||
|
/* Set the level to error */
|
||||||
|
defaultContext.setLevel(Level.ERROR);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grab at compile-time all arguments and generate runtime code to add them to `components`
|
||||||
|
*/
|
||||||
|
string[] components = flatten(segments);
|
||||||
|
|
||||||
|
/* Join all `components` into a single string */
|
||||||
|
string messageOut = join(components, multiArgJoiner);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Call the log */
|
||||||
|
logc(defaultContext, messageOut, c1, c2, c3, c4, c5, c6);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logging implementation, this is where the final
|
* Logging implementation, this is where the final
|
||||||
|
@ -224,11 +273,37 @@ unittest
|
||||||
// Create a default logger with the default joiner
|
// Create a default logger with the default joiner
|
||||||
logger = new DefaultLogger();
|
logger = new DefaultLogger();
|
||||||
|
|
||||||
// Create c custom context
|
// Create a custom context
|
||||||
Context customContext = new Context();
|
Context customContext = new Context();
|
||||||
|
|
||||||
// Log with the custom context
|
// Log with the custom context
|
||||||
logger.logc(customContext, logger.args(["an", "array"], 1, "hello", true));
|
logger.logc(customContext, logger.args(["an", "array"], 1, "hello", true));
|
||||||
|
|
||||||
|
writeln();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Printing out some mixed data-types, also using a DEFAULT context
|
||||||
|
* but also testing out the `error()`, `warn()`, `info()` and `debug()`
|
||||||
|
*/
|
||||||
|
unittest
|
||||||
|
{
|
||||||
|
Logger logger = new DefaultLogger();
|
||||||
|
|
||||||
|
// Create a default logger with the default joiner
|
||||||
|
logger = new DefaultLogger();
|
||||||
|
|
||||||
|
// Test out `error()`
|
||||||
|
logger.error(["woah", "LEVELS!"], 69.420);
|
||||||
|
|
||||||
|
// Test out `info()`
|
||||||
|
logger.info(["woah", "LEVELS!"], 69.420);
|
||||||
|
|
||||||
|
// Test out `warn()`
|
||||||
|
logger.warn(["woah", "LEVELS!"], 69.420);
|
||||||
|
|
||||||
|
// Test out `debug_()`
|
||||||
|
logger.debug_(["woah", "LEVELS!"], 69.420);
|
||||||
|
|
||||||
writeln();
|
writeln();
|
||||||
}
|
}
|
Loading…
Reference in New Issue