Skip to content
The simple, fast, multithreading logging library for D.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


onyx-log: the simple, fast, multithreading logging library for D.

Key features:

  • Create loggers in "logger pool" from configuration data packed to Bundle (onyx-config lib).
  • Get logger by his name.
  • Write message to logger.
  • Any work with loggers in multi-threaded environment is safety.
  • Working together with vibe.d

For use logger with vibe.d, add to your project:

in dub.sdl

subConfiguration "onyx-log" "library-vibedlog"

or in dub.json

"subConfigurations": {
        "onyx-log": "library-vibedlog"


Configuration text file ("./test/test.conf"):

# Logger's name. Any string value

# Message level accepted by logger
# Values by priority from low to high: debug, info, warning, error, critical, fatal
level = debug

# Appender is logger's message writer
# Values: NullAppender, ConsoleAppender, FileAppender
appender = FileAppender

# Rolling type
# Values: SizeBasedRollover
rolling = SizeBasedRollover

# Log file max size
# Values: number, number with suffix: K, M, G, T, P
maxSize = 2M

# Max number of log files
# Values: number
maxHistory = 4

# For FileAppender need path to log file and base of file name
fileName = ./log/MainDebug.log

level = error
appender = ConsoleAppender

Source code example:

    import onyx.log;
    import onyx.bundle;

    void main()
        /* Build ConfBundle from config file */
        auto bundle = new immutable Bundle("./test/test.conf");

        /* Add loggers to "logger pool" */

        /* Get logger from "logger pool" */
        auto log = getLogger("ErrorLogger");

        /* send message to logger */
        log.error("error msg");

        auto logDebug = getLogger("DebugLogger");
        logDebug.debug_("debug msg");"info test msg %d", 2);
    	logDebug.error("error test %s", "msg");
        logDebug.critical("critical test msg %#x", 125);
You can’t perform that action at this time.