The logger is a console instance by default. This means, to be safe, the user must implement:
> Object.keys(console)
[ 'log',
'info',
'warn',
'error',
'dir',
'time',
'timeEnd',
'trace',
'assert',
'Console' ]
A logger API could be something like function logger (level, message) {} or something like that. It would require your own calls to util.format instead of relying on the logger to do it, but you could easily abstract that in your code.