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: Logger.setLevel() not supported in 2.0?
Date Thu, 24 Jul 2014 14:34:57 GMT
You can always reconfigure your loggers at runtime by modifying the config
file. Another way would be to force a reconfigure() with a custom
ConfigurationFactory or similar.


On 24 July 2014 09:31, Merten Schumann <Merten.Schumann@asg.com> wrote:

> Well, the behavior of setLevel() in Log4j 1 in conjunction with logger
> hierarchies ... is unexpected, yes. ;-)
>
> So there is no public(ly supported) way to change a Logger's level in
> Log4j 2 - okay, I'll just miss it.
>
> We've got an API here offering some public documented our.own.Logger
> instances - including a setLevel() method at the public interface, Log4j 1
> is one of the logging implementations supported.
> I think we could implement a work around for our setLevel() method, when
> we want or have to support Log4j 2 - behind the scenes we could create
> multiple Logger instances for the same logical name but the appropriate
> Logger level and redirect to the correct one then. Not perfect but could
> work.
>
> Just found, the creation of Logger instances seems not to support
> specifying the level directly/programmatically ... aha, there seems to be a
> way via an own LoggerConfig implementation. :-)
>
> Thank you, Ralph!
>    Merten
>
> -----Original Message-----
> From: Ralph Goers [mailto:ralph.goers@dslextreme.com]
> Sent: Wednesday, July 23, 2014 5:26 PM
> To: Log4J Users List
> Subject: Re: Logger.setLevel() not supported in 2.0?
>
> In Log4j 2 Logger.setLevel() might now work the way you would expect.  It
> would change the level of the specific logger, but it would not affect
> child loggers.  So if you had a Logger(com.foo) and Logger(com.foo.bar),
> which both had effective levels of "error" and then you called setLevel on
> Logger(com.foo) with "debug", events logged to Logger(com.foo.bar) would
> still be at "error".  To change the level in a manner similar to Log4j 1
> you would want to obtain the appropriate LoggerConfig, change its Level and
> then call the LoggerContext's updateLoggers() method.  Needless to say,
> this is not something that is exposed at the API layer and ties you to the
> specifics of how Log4j 2 is implemented.
>
> FWIW, changing the Level of the LoggerConfig is supported via JMX, so you
> can create tooling that interacts with that.
>
> Ralph
>
> On Jul 22, 2014, at 11:32 PM, Merten Schumann <Merten.Schumann@asg.com>
> wrote:
>
> > Hello,
> >
> > from "Converting to the Log4j 2 API":
> > Calls to org.apache.log4j.Logger.setLevel() or similar methods are not
> supported in the API.
> > Applications should remove these.
> >
> > Could imagine the reason, checking getLevel() is final, so it's quick.
> > But, when you have in your program your good old fixed static Logger
> log, it's often helpful to toggle its logger level at runtime, when the
> method that should be investigated is reached in the code or in the
> debugger ... enable DEBUG output and disable it again ...
> >
> > Am I missing something? Nobody else missing this feature? :-)
> >
> > Thanx
> >   Merten
>
>
> ---------------------------------------------------------------------
> 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>

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