That was it! Thanks.
Next question: When I do this:
LoggerContext loggerContext =
(LoggerContext)LogManager.getContext(false);
Configuration loggerConfiguration = loggerContext.getConfiguration();
Map<String, Appender> appendersType =
loggerConfiguration.getAppenders();
for ( Map.Entry<String, Appender> appender : appendersType.entrySet() )
{
if ( appender.getKey().equalsIgnoreCase(selected.getAppenderName())
) {
RollingFileAppender a =
(RollingFileAppender)appender.getValue();
a.stop();
loggerConfiguration.initialize();
I get:
2018-02-20 13:29:23,913 ajp-nio-8009-exec-3 ERROR No logging configuration
and my entire log4j run-time config appears to be erased!
If I do a loggerContext.initialize(); there is no error, but upon refresh, the
logger is still active.
I just want to change the state (start/stop) of the appender. How do I post the
change back to the context?
On Feb 20, 2018, at 08:26 AM, Franz Wong <[email protected]> wrote:
Do you mean something like this?
public class MainApplication {
public static void main(String[] args) throws Exception {
Logger logger = LogManager.getLogger(MainApplication.class);
// logging level is error
logger.error("msg1");
logger.info("msg2");
org.apache.logging.log4j.core.LoggerContext context =
(org.apache.logging.log4j.core.LoggerContext) LogManager
.getContext(false);
Configuration config = context.getConfiguration();
config.getRootLogger().setLevel(Level.INFO);
context.updateLoggers(config);
// now logging level is info
logger.error("msg3");
logger.info("msg4");
}
}
On Tue, Feb 20, 2018 at 12:04 AM, Arnie Morein <[email protected]> wrote:
Hello, looking for some advice, assuming this is possible.
I am working with a rather complex application and the log4j2
configuration is also complex (12+ loggers).
It is started at war deployment by a WEB-INF/classes/log4j2.xml file and
then after the context is started, based on the host name (ie, environment:
prod, test, dev), the logging levels are changed to desired defaults.
All of this works great. But now I need to build a control panel page that
lists each appender/logger so certain settings can be changed or the file
rotated at run time when situations arise.
I know I can get a copy of the configuration from the file, but remember
above, those defaults have already been changed based on the host name.
I need to access the CURRENT in-memory configuration, but after digging
through the API, I cannot find the right call for this, assuming it exists.
Is there one?
My point being is that if I use the altered config default based on host
name, change a logger level from A to B, do some work, and want to return
to the control panel to return B to A or make some other change, I won't
see the fact that A is already at B.
Thanks!
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]