Yes that works, thanks a lot for that tip!
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
Map<String, LoggerConfig> loggers = config.getLoggers();
for(String key : loggers.keySet()) { // <----- big help
LoggerConfig cfg = loggers.get(key);
cfg.setLevel(Level.INFO);
}
ctx.updateLoggers(); // This causes all Loggers to refetch information from
their LoggerConfig.
-----Original Message-----
From: Ralph Goers [mailto:[email protected]]
Sent: Friday, July 26, 2013 10:45 AM
To: Log4J Users List
Subject: Re: programmatically setting level for many loggers not working for
2nd - Nth logger
If I understand your question correctly, the Configuration interface has a
getLoggers() call that returns a Map of all the LoggerConfig objects.
Ralph
On Jul 26, 2013, at 6:51 AM, SMITH, CURTIS wrote:
> Oh! So you're right. That's what feed back is for. <logger
> name="abc" I see the name I need to use now.
>
> My 2nd part of this question is, why should I embed into code a
> configuration dependency of " abc" , there needs to be a get list/iterator of
> loggers API to prevent having ot keep code and log4j2.xml in sync, right?
>
> Tnx curt
>
> -----Original Message-----
> From: Ralph Goers [mailto:[email protected]]
> Sent: Thursday, July 25, 2013 6:39 PM
> To: Log4J Users List
> Subject: Re: programmatically setting level for many loggers not working for
> 2nd - Nth logger
>
> I don't understand. You don't have any loggers configured named "VIDEO",
> "DLA" or "DEVICES". You do have appenders with those names. All those
> getLoggerConfig calls should end up returning the root loggerConfig.
>
> Ralph
>
>
> On Jul 25, 2013, at 2:36 PM, SMITH, CURTIS wrote:
>
>> Programmatical setting of loggers only works for the first logger declared
>> unfortunately. Further there's a missing API that allows me to get a list
>> of loggers (or configurations) to walk and set level like get Category in
>> v1. See my code below that has coupling between code and log4j2.xml
>>
>> Only the DLA logger seems to work for setting level at run time. If I
>> remove the level="DEBUG" attributes from the loggers, then I don't get any
>> logs.
>>
>> Code:
>> if (logLevelDebug != null) {
>> LoggerContext ctx = (LoggerContext)
>> LogManager.getContext(false);
>> Configuration config = ctx.getConfiguration();
>> LoggerConfig loggerConfig =
>> config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
>> loggerConfig.setLevel(Level.DEBUG);
>> loggerConfig = config.getLoggerConfig("VIDEO"); // doesn't
>> work. Is coupling with log4j2.xml
>> loggerConfig.setLevel(Level.DEBUG);
>> loggerConfig = config.getLoggerConfig("DLA"); // this
>> works, but is first declared in log4j2.xml
>> loggerConfig.setLevel(Level.DEBUG);
>> loggerConfig = config.getLoggerConfig("DEVICES");// doesn't
>> work
>> loggerConfig.setLevel(Level.DEBUG);
>> ctx.updateLoggers(); // This causes all Loggers to refetch
>> information from their LoggerConfig.
>>
>> logger.debug("ErrorLogsUI: setting root logger to DEBUG");
>> }
>> String logLevelWarn = req.getParameter("logLevelWarn");
>>
>> if (logLevelWarn != null) {
>> LoggerContext ctx = (LoggerContext)
>> LogManager.getContext(false);
>> Configuration config = ctx.getConfiguration();
>> LoggerConfig loggerConfig =
>> config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
>> loggerConfig.setLevel(Level.WARN);
>> loggerConfig = config.getLoggerConfig("VIDEO");
>> loggerConfig.setLevel(Level.WARN);
>> loggerConfig = config.getLoggerConfig("DLA");
>> loggerConfig.setLevel(Level.WARN);
>> loggerConfig = config.getLoggerConfig("DEVICES");
>> loggerConfig.setLevel(Level.WARN);
>> ctx.updateLoggers(); // This causes all Loggers to refetch
>> information from their LoggerConfig.
>>
>> logger.warn("ErrorLogsUI: setting root logger to WARN");
>> }
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <configuration status="trace" level="trace" >
>> <appenders>
>> <FastRollingFile name="DLA"
>> fileName="/tmp/att/sync/log/dla.log"
>> filePattern="/tmp/att/sync/log/dla.log.%i"
>> append="true">
>> <PatternLayout>
>>
>> <pattern>[%d][%-5p][%-15t][%-15c{1}]:%m%n</pattern>
>> </PatternLayout>
>> <Policies>
>> <SizeBasedTriggeringPolicy size="3 MB" />
>> </Policies>
>> <DefaultRolloverStrategy max="2" />
>> </FastRollingFile>
>> <FastRollingFile name="DEVICES"
>> fileName="/tmp/att/sync/log/dla_devices.log"
>> filePattern="/tmp/att/sync/log/dla_devices.log.%i"
>> append="true">
>> <PatternLayout>
>>
>> <pattern>[%d][%-5p][%-15t][%-15c{1}]:%m%n</pattern>
>> </PatternLayout>
>> <Policies>
>> <SizeBasedTriggeringPolicy size="3 MB" />
>> </Policies>
>> <DefaultRolloverStrategy max="1" />
>> </FastRollingFile>
>> <FastRollingFile name="VIDEO"
>> fileName="/tmp/att/sync/log/dla_video.log"
>> filePattern="/tmp/att/sync/log/dla_video.log.%i"
>> append="true">
>> <PatternLayout>
>>
>> <pattern>[%d][%-5p][%-15t][%-15c{1}]:%m%n</pattern>
>> </PatternLayout>
>> <Policies>
>> <SizeBasedTriggeringPolicy size="3 MB" />
>> </Policies>
>> <DefaultRolloverStrategy max="1" />
>> </FastRollingFile>
>> <Console name="CO" target="SYSTEM_OUT">
>> <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) -
>> %m%n" />
>> </Console>
>> </appenders>
>> <loggers>
>> <logger name="com.att.dlc.afm" additivity="false" >
>> <appender-ref ref="DLA" />
>> </logger>
>> <logger name="com.att.dlc.devices" additivity="false"
>> level="debug">
>> <appender-ref ref="DEVICES" />
>> </logger>
>> <logger name="com.att.dlc.util.serialport" additivity="false"
>> level="debug">
>> <appender-ref ref="DEVICES" />
>> </logger>
>> <logger name="com.att.dlc.webcamserver" additivity="false"
>> level="debug">
>> <appender-ref ref="VIDEO" />
>> </logger>
>> <logger name="com.att.dlc.devices.cameras" additivity="false"
>> level="debug">
>> <appender-ref ref="VIDEO" />
>> </logger>
>> <root level="debug">
>> <appender-ref ref="DLA" />
>> </root>
>> </loggers>
>> </configuration>
>>
>> Curt Smith
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]