Requirements for the library
Before we embark on writing the library, let us scribble down a preliminary requirement statement as shown next:
The logging library should provide a unified interface to handle log entries which are supposed to be persisted in a media (file, remote node, or a database) and target media should be determined during runtime from a configuration file. The API should be target-independent and there should be provision to add new log targets without changing the application logic.