# Introduction
SLF4D stands for Simple Logging Facade for D, but what does that mean? Well, put briefly, it's a frontend for logging, with a configurable backend for handling log messages. This means that many different libraries can all use SLF4D, while letting the end-user decide how they want log messages to be processed.
Suppose I've made my own D library, and I want to add logging to it. I can use SLF4D like so:
module my_lib;
import slf4d;
void myComplexFunction(int x) {
debugF!"Doing some complex stuff with %d."(x);
// Do stuff below here...
}
Then when I go to make an app using my_lib
, I can configure logging once in my app, and any modules using SLF4D will have their messages handled according to my configuration:
module my_app;
import slf4d;
import slf4d.default_provider;
import my_lib;
void main() {
// In this example, we'll just be using SLF4D's default logging provider
// but you can use any SLF4D provider.
auto provider = new DefaultProvider(true, Levels.DEBUG, "log-files");
configureLoggingProvider(provider);
myComplexFunction(42);
}
This short example illustrates the main purposes of SLF4D:
- Simplify the logging interface for developers
- Give the end-user complete control over their log messages