Package org.refcodes.logger
Class RuntimeLoggerFactoryImpl
- java.lang.Object
-
- org.refcodes.logger.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 yourRuntimeLoggerFactoryImpl
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
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
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).SeeSystemProperty.CONFIG_DIR
andConfigLocator.getFolders()
. The "runtimelogger.ini
" configuration is deadly simple:[root] runtimelogger=org.refcodes.logger.RuntimeLoggerImpl runtimelogger/logPriority=INFO runtimelogger/logger=org.refcodes.logger.SystemLoggerImpl [com.acme] runtimelogger=org.refcodes.logger.RuntimeLoggerImpl runtimelogger/logPriority=INFO runtimelogger/name=com.acme runtimelogger/logger=org.refcodes.logger.SystemLoggerImpl
The XML element nesting represents the Java package for which the therein configuredRuntimeLogger
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>
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
RuntimeLoggerFactoryImpl()
Instantiates a new runtime logger factory impl.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description RuntimeLogger
createInstance()
RuntimeLogger
createInstance(java.lang.String aIdentifier)
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 theRuntimeLogger.RUNTIME_LOGGER_CONFIG
XML file.RuntimeLogger
createInstance(java.util.Map<java.lang.String,java.lang.String> aProperties)
static RuntimeLogger
fromConfigurationFile(java.lang.String aElementPath, java.lang.String aConfigFileName)
Loads the configuredRuntimeLogger
from the given configuration file.
-
-
-
Method Detail
-
createInstance
public RuntimeLogger createInstance()
- Specified by:
createInstance
in interfaceorg.refcodes.factory.TypeFactory<RuntimeLogger>
-
createInstance
public RuntimeLogger createInstance(java.util.Map<java.lang.String,java.lang.String> aProperties)
- Specified by:
createInstance
in interfaceorg.refcodes.factory.TypeFactory<RuntimeLogger>
-
createInstance
public RuntimeLogger createInstance(java.lang.String aIdentifier)
- Specified by:
createInstance
in interfaceorg.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 theRuntimeLogger.RUNTIME_LOGGER_CONFIG
XML file. The level hierarchy is actually the path to the XML element providing theRuntimeLogger
's configuration. Each level is separated by the succeeding level with a dot "." as defined by theDelimiter.NAMESPACE
char value. The root logger's level hierarchy (XML path) is defined by theRuntimeLogger.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 interfaceorg.refcodes.factory.LookupFactory<RuntimeLogger,java.lang.String>
-
fromConfigurationFile
public static RuntimeLogger fromConfigurationFile(java.lang.String aElementPath, java.lang.String aConfigFileName) throws LoggerInstantiationRuntimeException
Loads the configuredRuntimeLogger
from the given configuration file. Various locations as well file endings are probed as of theRuntimeProperties
as well as of theConfigLocator.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 aLogger
(RuntimeLogger
) failed,
-
-