* Provide a method for plugins to report failure to initialise
* Check plugins initialised properly before adding to list of logging
backends
* Check the logger is available before trying to log a message
(might cause bugs if errors are logged very early in initialisation)
Log classes previously assumed all logs to be sourced from the local
machine with no program name set. This change adds support to read/set
the program name, and ensures the hostname/program name are properly
tracked into and out of the database.
Makes Exceptions extend the base classes, rather than the subclasses to
avoid class redefinition errors.
Makes PluginFactories define the interface using the base class rather
than a subclass to avoid class_implements() to fail by testing for a
class not in the hierarchy.
Additional class prefixes can be registered with the class autoloader.
Also supports subclass trees, which override base classes with stub class support,
in exactly the same way SihnonFramework and Sihnon classes are loaded.
All framework classes have been renamed to use the SihnonFramework_ prefix.
The class autoloader now looks for subclasses of the framework classes in the Sihnon_Lib directory, and
automatically creates them if they don't exist. The autoloader correctly creates interfaces and abstract
classes as needed, by using reflection to check the type of the parent class.
All references to classes within the framework now use the Sihnon_ prefix.
The PluginFactory supports multiple scan directories, and will search both the framework and subclass class
tree to find candidate plugins.
Added Database and Flatfile plugin engines for both Config and Log classes.
Rewrote Main to make use of the new plugins.
Updated config file definitions to make use of plugins.