Hi again.

So. I managed to get a new ConfigurationFactory running (just so as to avoid the ERROR level message given by the StatusLogger when no config file is found) that returns a DefaultConfiguration() for now.

I happened to have overriden the wrong method. "getConfiguration(ConfigurationSource)" is not directly called and when configLocation is null, it will never be called. So I overrode getConfiguration(String, URI) instead, and then it worked.

So now I'm trying to -- outside of any Configuration class or subclass -- to get a modest change to the configuration going. I am just trying to add Two Loggers with associeted LoggerConfig, that will inherit the Appender from the RootLogger.

However, I am failing and I don't know why.

ConfigurationFactory.setConfigurationFactory(new DefaultNoErrorFactory());
LoggerContext lc = (LoggerContext)LogManager.getContext();
Configuration conf = lc.getConfiguration();
addLogger(conf, thunderbolt.Server.class, Level.TRACE, true);
addLogger(conf, telnet.Negotiator.class, Level.DEBUG, true);
lc.updateLoggers();


My "addLogger" method simply does either one of two things:

1. call configuration.addLogger("name", new LoggerConfig("name", level, additive)); 2. call configuration.addLogger("name", LoggerConfig.createLogger("" + additive, level, c.getName(), "false", new org.apache.logging.log4j.core.config.AppenderRef[0], null, conf, null));

When I do a print of configuration.getLoggers(), it prints the Map with the contents of the two loggers (LoggerConfigs) I have added.

However loggerContext.getLoggers() produces an empty Collection.

Meanwhile,

LogManager.getLogger() <-- which references the current class -->.error("text") .. will produce output, but .info("text") will not, which means it is not configured.

Or rather, it just takes the value of the rootlogger (its level).

I do not know how to get the loggers into the LoggerContext. What am I doing wrong? The way it is explained, I do not need to add any appender (for now) as it should inherit from the rootlogger.

The page at https://logging.apache.org/log4j/2.x/manual/customconfig.html
shows almost the exact same code, except that it adds an Appender to the Configuration and to the LoggerConfig. There are no errors and when I put the StatusLogger to TRACE, It doesn't show anything meaningful:

Output below.

I don't really know what to do?

Regards, Bart.


DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Using ShutdownCallbackRegistry class org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry
WARN StatusLogger Multiple logging implementations found:
Factory: org.apache.logging.log4j.core.impl.Log4jContextFactory, Weighting: 10
Using factory: org.apache.logging.log4j.core.impl.Log4jContextFactory
DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Took 0,149366 seconds to load 138 plugins from sun.misc.Launcher$AppClassLoader@60e53b93
DEBUG StatusLogger PluginManager 'Converter' found 33 plugins
WARN StatusLogger Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
DEBUG StatusLogger Starting OutputStreamManager SYSTEM_OUT
DEBUG StatusLogger Starting LoggerContext[name=Default, org.apache.logging.log4j.core.LoggerContext@71c7db30]... DEBUG StatusLogger Reconfiguration started for context[name=Default] at null (org.apache.logging.log4j.core.LoggerContext@71c7db30) with optional ClassLoader: null
DEBUG StatusLogger PluginManager 'ConfigurationFactory' found 3 plugins
DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin. DEBUG StatusLogger Using configurationFactory thunderbolt.log.DefaultNoErrorFactory@43a25848 DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin.
DEBUG StatusLogger PluginManager 'Converter' found 33 plugins
WARN StatusLogger Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream DEBUG StatusLogger Starting configuration org.apache.logging.log4j.core.config.DefaultConfiguration@6a5fc7f7
DEBUG StatusLogger PluginManager 'Core' found 69 plugins
DEBUG StatusLogger PluginManager 'Level' found 0 plugins
DEBUG StatusLogger Started configuration org.apache.logging.log4j.core.config.DefaultConfiguration@6a5fc7f7 OK. TRACE StatusLogger Stopping org.apache.logging.log4j.core.config.DefaultConfiguration@1e643faf...
TRACE StatusLogger AbstractConfiguration stopped 0 AsyncLoggerConfigs.
TRACE StatusLogger AbstractConfiguration stopped 0 AsyncAppenders.
TRACE StatusLogger AbstractConfiguration stopped 1 Appenders.
TRACE StatusLogger AbstractConfiguration stopped 0 Loggers.
DEBUG StatusLogger Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@1e643faf OK DEBUG StatusLogger Reconfiguration complete for context[name=Default] at null (org.apache.logging.log4j.core.LoggerContext@71c7db30) with optional ClassLoader: null
DEBUG StatusLogger Shutdown hook enabled. Registering a new one.
DEBUG StatusLogger LoggerContext[name=Default, org.apache.logging.log4j.core.LoggerContext@71c7db30] started OK. DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin.
DEBUG StatusLogger PluginManager 'Converter' found 33 plugins
WARN StatusLogger Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream DEBUG StatusLogger Starting LoggerContext[name=1625635731, org.apache.logging.log4j.core.LoggerContext@13a57a3b]... DEBUG StatusLogger Reconfiguration started for context[name=1625635731] at null (org.apache.logging.log4j.core.LoggerContext@13a57a3b) with optional ClassLoader: null DEBUG StatusLogger Using configurationFactory thunderbolt.log.DefaultNoErrorFactory@43a25848 DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin.
DEBUG StatusLogger PluginManager 'Converter' found 33 plugins
WARN StatusLogger Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream DEBUG StatusLogger Starting configuration org.apache.logging.log4j.core.config.DefaultConfiguration@7ca48474
DEBUG StatusLogger PluginManager 'Core' found 69 plugins
DEBUG StatusLogger PluginManager 'Level' found 0 plugins
DEBUG StatusLogger Started configuration org.apache.logging.log4j.core.config.DefaultConfiguration@7ca48474 OK. TRACE StatusLogger Stopping org.apache.logging.log4j.core.config.DefaultConfiguration@59e84876...
TRACE StatusLogger AbstractConfiguration stopped 0 AsyncLoggerConfigs.
TRACE StatusLogger AbstractConfiguration stopped 0 AsyncAppenders.
TRACE StatusLogger AbstractConfiguration stopped 1 Appenders.
TRACE StatusLogger AbstractConfiguration stopped 0 Loggers.
DEBUG StatusLogger Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@59e84876 OK
Current loggers: --------
{telnet.Negotiator=telnet.Negotiator, thunderbolt.Server=thunderbolt.Server} <== the Map from Configuration
-------------------------
[]   <== the Collection from LoggerContext
-------------------------

Reply via email to