SyslogHandler

- Added new handler

SyslogHandler (unittests)

- Added test case
This commit is contained in:
Tristan B. Velloza Kildaire 2024-04-26 22:20:54 +02:00
parent 852388df42
commit ad089bc5d2
1 changed files with 57 additions and 0 deletions

57
source/dlog/syslog.d Normal file
View File

@ -0,0 +1,57 @@
module dlog.syslog;
import core.sys.posix.syslog : openlog, syslog, closelog;
import dlog.core : Handler, Message;
import dlog.basic : BasicMessage;
/**
* A file-based handler which
* writes `BasicMessage`(s)
* to a provided file
*/
public class SyslogHandler : Handler
{
this(string name)
{
// TODO: what top set options and facility to?
openlog(name.ptr, 0, 0);
}
/**
* Handles the message, does a
* no-op if the message is
* not a kind-of `BasicMessage`
*
* Params:
* message = the message
*/
public void handle(Message message)
{
// Only handle BasicMessage(s)
BasicMessage bmesg = cast(BasicMessage)message;
if(bmesg)
{
// TODO: What to set priortiy to?
syslog(0, bmesg.getText().ptr);
}
}
~this()
{
closelog();
}
}
unittest
{
BasicLogger log = new BasicLogger();
log.addHandler(new SyslogHandler("Ting"));
log.log(new BasicMessage("Howdy"));
}
version(unittest)
{
import dlog.basic;
}