Class RuntimeLoggerFactoryImpl

  • All Implemented Interfaces:
    org.refcodes.factory.LookupFactory<RuntimeLogger,java.lang.String>, org.refcodes.factory.TypeFactory<RuntimeLogger>, RuntimeLoggerFactory
    Direct Known Subclasses:
    RuntimeLoggerFactorySingleton


    public class RuntimeLoggerFactoryImpl
    extends java.lang.Object
    implements RuntimeLoggerFactory
    You configure your RuntimeLoggerFactoryImpl by providing a "runtimelogger.ini" file (see "http://www.refcodes.org/refcodes/refcodes-logger") in one of those locations relative to your main class's location:
    • .
    • ./config
    • ./etc
    • ./settings
    • ./.config
    • ./.settings
    • ../config
    • ../etc
    • ../settings
    • ../.config
    • ../.settings
    Given your main class's JAR file resides in the folder /opt/app/lib, then the valid locations for the "runtimelogger.ini" file are:
    • /opt/app/lib
    • /opt/app/lib/config
    • /opt/app/lib/etc
    • /opt/app/lib/settings
    • /opt/app/lib/.config
    • /opt/app/lib/.settings
    • /opt/app/config
    • /opt/app/etc
    • /opt/app/settings
    • /opt/app/.config
    • /opt/app/.settings
    In case you pass a JVM argument via "-Dconfig.dir=path_to_your_config_dir" (where path_to_your_config_dir stands for the path to the directory where you placed configuration files such as the "runtimelogger.ini" file), then your path_to_your_config_dir is placed first in the list of configuration directories to look at (in case the directory exists).See SystemProperty.CONFIG_DIR and ConfigLocator.getFolders(). The "runtimelogger.ini" configuration is deadly simple:
     [root]
     
     runtimelogger=org.refcodes.logger.RuntimeLoggerImpl
     runtimelogger/logPriority=INFO
     runtimelogger/logger=org.refcodes.logger.SystemLogger
     
     [com.acme]
     
     runtimelogger=org.refcodes.logger.RuntimeLoggerImpl
     runtimelogger/logPriority=INFO
     runtimelogger/name=com.acme
     runtimelogger/logger=org.refcodes.logger.SystemLogger
     
    The XML element nesting represents the Java package for which the therein configured RuntimeLogger is responsible; e.g. a log issued from inside a class located in the package "com.acme" (or in one of its sub-packages) will be handled by the "AcmeLogger". In case no logger is found for a given package, then the root logger found in the <root> ... </root> element is used. Useful to know that a logger for a package namespace is only created once.

    If you like logs colored nicely with ANSI Escape-Codes, then you will love the ConsoleLoggerSingleton:

     
     <?xml version="1.0" encoding="ISO-8859-1" ?>
     <config>
     	<root config-class=
    "org.refcodes.logger.RuntimeLoggerImpl" logPriorityName="INFO" name="*">
     		<logger config-class=
    "org.refcodes.logger.alt.console.ConsoleLoggerSingleton" />
     	</root>
     </config>
     
     
    Make sure to include the "refcodces-logger-alt-console" dependency in your build setup to include the "ConsoleLoggerSingleton" logger.
    • Constructor Detail

      • RuntimeLoggerFactoryImpl

        protected RuntimeLoggerFactoryImpl​()
        Instantiates a new runtime logger factory impl.
    • Method Detail

      • createInstance

        public RuntimeLogger createInstance​()
        Specified by:
        createInstance in interface org.refcodes.factory.TypeFactory<RuntimeLogger>
      • createInstance

        public RuntimeLogger createInstance​(java.util.Map<java.lang.String,java.lang.String> aProperties)
        Specified by:
        createInstance in interface org.refcodes.factory.TypeFactory<RuntimeLogger>
      • createInstance

        public RuntimeLogger createInstance​(java.lang.String aIdentifier)
        Specified by:
        createInstance in interface org.refcodes.factory.LookupFactory<RuntimeLogger,java.lang.String>
      • createInstance

        public RuntimeLogger createInstance​(java.lang.String aIdentifier,
                                            java.util.Map<java.lang.String,java.lang.String> aProperties)
        The provided identifier represents a level hierarchy as defined in the RuntimeLogger.RUNTIME_LOGGER_CONFIG XML file. The level hierarchy is actually the path to the XML element providing the RuntimeLogger's configuration. Each level is separated by the succeeding level with a dot "." as defined by the Delimiter.NAMESPACE char value. The root logger's level hierarchy (XML path) is defined by the RuntimeLogger.ROOT_LOGGER_ELEMENT_PATH; at the time of this writing it was set to "org.refcodes.logger.runtimeLogger". The properties are currently ignored.
        Specified by:
        createInstance in interface org.refcodes.factory.LookupFactory<RuntimeLogger,java.lang.String>
      • fromConfigurationFile

        public static RuntimeLogger fromConfigurationFile​(java.lang.String aElementPath,
                                                          java.lang.String aConfigFileName)
                                                   throws LoggerInstantiationRuntimeException
        Loads the configured RuntimeLogger from the given configuration file. Various locations as well file endings are probed as of the RuntimeProperties as well as of the ConfigLocator.ALL definition.
        Parameters:
        aElementPath - The path (package) for which to create the logger.
        aConfigFileName - The (base) file name of the configuration file.
        Returns:
        The according logger.
        Throws:
        LoggerInstantiationRuntimeException - Thrown in case instantiating a Logger (RuntimeLogger) failed,