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 <franzw...@gmail.com> 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 <arnie.mor...@mac.com> 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: log4j-user-unsubscr...@logging.apache.org

For additional commands, e-mail: log4j-user-h...@logging.apache.org




Reply via email to