deslog 0.3.0

D Extended Set Logging System


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

D Extended Set (DES) Logging System

Build Status Join the chat at https://gitter.im/dexset/discussion

Package provides static Logger logger

Logger using

class Logger has functions for logging with different levels

void error(Args...)( Args args );
void warn (Args...)( Args args );
void info (Args...)( Args args );
void Debug(Args...)( Args args );
void trace(Args...)( Args args );

and for hacking logging system in runtime

static shared(OutputHandler) output() @property;
static shared(Rule) rule() @property;

For hacking see example dir

Simple example

import des.log;

void func()
{
    logger.fatal( "fatal" );
    logger.error( "error" );
    logger.warn( "warn" );
    logger.info( "info" );
    logger.Debug( "debug" );
    logger.trace( "trace" );
}

void main()
{
    logger.fatal( "fatal message" );
    logger.error( "error message" );
    logger.warn( "warn message" );
    logger.info( "info message" );
    logger.Debug( "debug message" );
    logger.trace( "trace message" );

    func();
}

example output

Flag --log used for setting max level of logging output. Default level is error. If log function called with greater level it's skipped. Level has attitudes off < fatal < error < warn < info < debug < trace.

Flag --log can be used with module name ./program --log draw.point:debug. It will set debug level for module draw.point and default to other.

Flag --log-use-min is boolean flag. It forces logging system to skip output from all child modules if their level greater than parent. Default is false.

./program --log trace --log draw:info --log draw.point:trace --log-use-min=true skips all output from logger.trace and logger.Debug from whole draw.point, and doesn't skip from other modules.

./program --log trace --log draw:info --log draw.point:trace allow log_trace and log_debug only from draw.point from module draw. For other modules in draw sets level info

You can compile program with version=des_log_onlyerror for skip all trace, debug, info and warn outputs in logger. It can improve program release speed.

Class logging

Module provides some functional for useful logging classes.

Example:

module x;
import des.log;
class A
{
    mixin ClassLogger;
    void func() { logger.trace( "hello" ); }
}
module y;
import x;
class B : A { }
auto b = new B;
b.func();

outputs:

If create instance logger

class B : A { this(){ logger = new InstanceLogger(this); } }

outputs:

If create instance logger with instance name

class B : A { this(){ logger = new InstanceLogger(this,"my object"); } }

outputs:

If create instance full logger

class B : A { this(){ logger = new InstanceFullLogger(this); } }

outputs:

If create instance full logger with name

class B : A { this(){ logger = new InstanceFullLogger(this,"name"); } }

outputs:

Flag --log can get full emitter string y.B.[name].[x.A.func].

./program --log "y.B.[one]:trace" --log "y.B.[two]:debug"

To build doc use harbored-mod

Authors:
Oleg Butko (deviator)
Dependencies:
none
Versions:
0.3.0 2015-Dec-12
0.2.1 2015-Dec-08
0.2.0 2015-May-30
~master 2015-Dec-12
Show all 4 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 366 downloads total