logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Sicker <boa...@gmail.com>
Subject Re: how to change logging level for a class at runtime [I]
Date Sat, 09 Aug 2014 01:34:38 GMT
Is this not what you're looking for?

http://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/jmx/LoggerConfigAdminMBean.html


On 6 August 2014 22:44, Matt Sicker <boards@gmail.com> wrote:

> I may take a look at this soon as I've been getting into JMX lately at
> work in order to automate some build/deployment infrastructure. It's still
> fresh ;)
>
>
> On 6 August 2014 17:42, Ralph Goers <ralph.goers@dslextreme.com> wrote:
>
>> I wouldn’t have asked for a patch submission if I didn’t plan to consider
>> it. That said, we are all volunteers here and sometimes don’t get to things
>> as quickly as we would like.
>>
>> Ralph
>>
>> On Aug 6, 2014, at 1:24 PM, Ang Xu <axu@linkedin.com.INVALID> wrote:
>>
>> > Hi,
>> >
>> > Is there any plan to merge this patch to the main branch? This
>> > functionality seems extremely useful when modifying config file is not
>> an
>> > option.
>> >
>> > Thanks,
>> > Ang
>> >
>> > On 6/25/14, 12:19 AM, "Phil Wray" <phil.wray@db.com> wrote:
>> >
>> >> Classification: For internal use only
>> >>
>> >> Hey Ralph.
>> >> Sure - have created:
>> >> LOG4J2-681 Add ability to change log level for any class/package
>> >> dynamically via jmx
>> >>
>> >> cheers,
>> >> Phil
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> From:
>> >> Ralph Goers <rgoers@apache.org>
>> >> To:
>> >> Log4J Users List <log4j-user@logging.apache.org>,
>> >> Date:
>> >> 24/06/2014 15:34
>> >> Subject:
>> >> Re: how to change logging level for a class at runtime
>> >>
>> >>
>> >>
>> >> Phil,
>> >>
>> >> That looks pretty good.  It would be great if you could create a Jira
>> >> issue and add that as a patch
>> >>
>> >> Sent from my iPad
>> >>
>> >>> On Jun 24, 2014, at 7:01 AM, Phil Wray <phil.wray@db.com> wrote:
>> >>>
>> >>> Classification: Public
>> >>>
>> >>> Hi Ralph,
>> >>> Just to confirm running latest trunk version its possible to change
>> >> levels
>> >>> at runtime using code as per your docs.
>> >>> Thanks for the help.
>> >>> I see a tag for 2.0-rc2 was taken a couple of days ago - I'm guessing
>> >> this
>> >>> is being released imminently?
>> >>>
>> >>> In case it helps others I ended up with the following util to let us
>> >>> change levels via jmx, just using whatever existing appender the
>> logger
>> >>> would have had.
>> >>>
>> >>>       @ManagedOperation
>> >>>       public String changeLogLevel(String loggerName, String level){
>> >>>               Level newLevel = Level.toLevel(level);
>> >>>               LoggerContext ctx = (LoggerContext)
>> >> LogManager.getContext(
>> >>> false);
>> >>>               Configuration config = ctx.getConfiguration();
>> >>>               LoggerConfig loggerConfig =
>> >>> config.getLoggerConfig(loggerName);
>> >>>               String msg;
>> >>>
>> >>>               if (loggerName.equals(loggerConfig.getName())){
>> >>>                       Level oldLevel = loggerConfig.getLevel();
>> >>>                       loggerConfig.setLevel(newLevel);
>> >>>                       msg = String.format("Modified existing logger
%s
>> >>> level from %s to %s", loggerName, oldLevel, newLevel);
>> >>>               } else {
>> >>>                       createCopyFrom(loggerConfig, loggerName,
>> >> newLevel,
>> >>> config);
>> >>>                       msg = String.format("Added new logger %s with
>> >>> level %s previously used logger %s with level %s", loggerName,
>> >>> newLevel,
>> >>
>> >>> loggerConfig.getName(), loggerConfig.getLevel());
>> >>>               }
>> >>>               ctx.updateLoggers();
>> >>>               LOG.info(msg);
>> >>>               return msg;
>> >>>       }
>> >>>
>> >>>       private void createCopyFrom(LoggerConfig original, String name,
>> >>> Level level, Configuration config){
>> >>>               AppenderRef[] refs = original.getAppenderRefs().toArray(
>> >>> new AppenderRef[]{});
>> >>>               Filter filter = original.getFilter();
>> >>>               LoggerConfig copy = LoggerConfig.createLogger(
>> >>>                               "false",
>> >>>                               level,
>> >>>                               name,
>> >>>                               Boolean.toString
>> >>> (original.isIncludeLocation()),
>> >>>                               refs, null, config, filter);
>> >>>
>> >>>               for (Appender appender :
>> >>> original.getAppenders().values()){
>> >>>                       copy.addAppender(appender, null, null);
>> >>>               }
>> >>>               config.addLogger(name, copy);
>> >>>       }
>> >>>
>> >>> cheers,
>> >>> Phil
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> From:
>> >>> Phil Wray/ext/dbcom
>> >>> To:
>> >>> "Log4J Users List" <log4j-user@logging.apache.org>,
>> >>> Date:
>> >>> 24/06/2014 11:16
>> >>> Subject:
>> >>> Re: how to change logging level for a class at runtime
>> >>>
>> >>>
>> >>> Classification: Public
>> >>>
>> >>> Hi Ralph,
>> >>> Sorry hadn't looked at the latest source  - see you've made changes
to
>> >>> Configuration to allow adding of LoggerConfig via the interface that
>> >>> are
>> >>
>> >>> not yet in the release candidate jar.
>> >>> I'll take the latest source and build from that.
>> >>>
>> >>>
>> >>> thanks,
>> >>> Phil
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> From:
>> >>> Phil Wray/ext/dbcom
>> >>> To:
>> >>> "Log4J Users List" <log4j-user@logging.apache.org>,
>> >>> Date:
>> >>> 24/06/2014 09:07
>> >>> Subject:
>> >>> Re: how to change logging level for a class at runtime
>> >>>
>> >>>
>> >>> Classification: Public
>> >>>
>> >>> Hi Ralph,
>> >>> Thanks for getting back, but the examples do not show how to change
>> >> levels
>> >>> at runtime,
>> >>>
>> >>> There is no method addLogger(String, LoggerConfig) method on the
>> >>> Configuration interface.
>> >>> The addLogger method exists on BaseConfiguration, however it throws
an
>> >>> IllegalStateException as its already started, and says you have to
>> >> create
>> >>> a new configuration.
>> >>>
>> >>> Is it actually possible to change the logging level for a
>> class/package
>> >> at
>> >>> runtime after startup?
>> >>> I think this is a common use case for troubleshooting critical long
>> >>> running processes.
>> >>>
>> >>>
>> >>> thanks,
>> >>> Phil
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> From:
>> >>> Ralph Goers <ralph.goers@dslextreme.com>
>> >>> To:
>> >>> Log4J Users List <log4j-user@logging.apache.org>,
>> >>> Date:
>> >>> 23/06/2014 15:57
>> >>> Subject:
>> >>> Re: how to change logging level for a class at runtime
>> >>>
>> >>>
>> >>>
>> >>> Please see
>> >>> http://people.apache.org/~rgoers/log4j2/manual/customconfig.html
>> >>>
>> >>> Ralph
>> >>>
>> >>>> On Jun 23, 2014, at 3:44 AM, Phil Wray <phil.wray@db.com>
wrote:
>> >>>>
>> >>>> Classification: Public
>> >>>>
>> >>>> Hi,
>> >>>> Would like to turn on debug for a particular class or package at
>> >>> runtime,
>> >>>> either via jmx or programmatically, where this class or package
is
>> >>>> arbitrary and not known at start up time please.
>> >>>> I can't see a way to do this?
>> >>>> Previous posts titled "Programmatic configuration of loggers" show
>> how
>> >>> to
>> >>>> do this for an existing named logger but not for an arbitrary class
>> or
>> >>>> package which is a typical use case.
>> >>>> LoggerConfig loggerConfig = config.getLoggerConfig(loggerName);
>> >>>>
>> >>>> But this returns the root logger if no existing logger for that
name
>> >>>> exists - and we can't just enable debug on everything.
>> >>>> Is there a way of adding a new LoggerConfig into the configuration?
>> >>>>
>> >>>> thanks,
>> >>>> Phil Wray
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> ---
>> >>>>
>> >>>> This e-mail may contain confidential and/or privileged information.
>> If
>> >>> you are not the intended recipient (or have received this e-mail in
>> >> error)
>> >>> please notify the sender immediately and delete this e-mail. Any
>> >>> unauthorized copying, disclosure or distribution of the material in
>> >>> this
>> >>
>> >>> e-mail is strictly forbidden.
>> >>>>
>> >>>> Please refer to http://www.db.com/en/content/eu_disclosures.htm
for
>> >>> additional EU corporate and regulatory disclosures and to
>> >>> http://www.db.com/unitedkingdom/content/privacy.htm for information
>> >> about
>> >>> privacy.
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> ---
>> >>>
>> >>> This e-mail may contain confidential and/or privileged information.
If
>> >> you are not the intended recipient (or have received this e-mail in
>> >> error)
>> >> please notify the sender immediately and delete this e-mail. Any
>> >> unauthorized copying, disclosure or distribution of the material in
>> this
>> >> e-mail is strictly forbidden.
>> >>>
>> >>> Please refer to http://www.db.com/en/content/eu_disclosures.htm for
>> >> additional EU corporate and regulatory disclosures and to
>> >> http://www.db.com/unitedkingdom/content/privacy.htm for information
>> about
>> >> privacy.
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> >> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> ---
>> >>
>> >> This e-mail may contain confidential and/or privileged information. If
>> >> you are not the intended recipient (or have received this e-mail in
>> >> error) please notify the sender immediately and delete this e-mail. Any
>> >> unauthorized copying, disclosure or distribution of the material in
>> this
>> >> e-mail is strictly forbidden.
>> >>
>> >> Please refer to http://www.db.com/en/content/eu_disclosures.htm for
>> >> additional EU corporate and regulatory disclosures and to
>> >> http://www.db.com/unitedkingdom/content/privacy.htm for information
>> about
>> >> privacy.
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> > For additional commands, e-mail: log4j-user-help@logging.apache.org
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>
>>
>
>
> --
> Matt Sicker <boards@gmail.com>
>



-- 
Matt Sicker <boards@gmail.com>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message