Re: (Finally) Migrating from log4j 1.x
Christopher Schultz <[email protected]>
| Newsgroups | gmane.comp.jakarta.log4j.user |
|---|---|
| Message-ID | <[email protected]> |
Gary, On 12/17/21 22:18, Gary Gregory wrote: > Log4j 2 can reconfigure itself when its configuration file changes by > using the monitorInterval attribute, for example: > > <Configuration name="ConfigTest" status="ERROR" monitorInterval="5"> > > See https://logging.apache.org/log4j/2.x/manual/configuration.html > > For programmatic reconfiguration, you can use > org.apache.logging.log4j.core.config.Configurator. > > I hope that gives you a place to start. I'll give it a shot. What we are doing is loading a default configuration (like "log to console") on startup and then, after reading a client-specific configuration file, applying that configuration to the already-initialized logging system. We can't predict the name of the config file at-or-before startup and we don't want to re-write the default configuration. I'm sure we can pass either a new file path to a Configurator and/or have it an in-memory configuration. We don't need to monkey-around with the in-memory Logger or Appender objects; just tell the logging system to reconfigure. I have seen in the log4j debug logs that it knows how to "reconfigure" because it does it pretty much right away after loading. So I think I just need to tell it to reload again, but with a different set of configs. Thanks, -chris > On Thu, Dec 16, 2021 at 11:02 AM Christopher Schultz > <[email protected]> wrote: >> >> All, >> >> My understanding is that under many circumstances, migrating from log4j >> 1.x -> 2.x is nearly as easy as simply upgrading the JAR file (and using >> the migration bridge library), but there are some other restrictions as >> noted here: >> >> https://logging.apache.org/log4j/2.x/manual/migration.html >> >> In various programs and services, we are using log4j 1.x in a way that >> might be a little hacky. Specifically, we have a set of classes which >> allow appenders and loggers to be reconfigured at runtime using calls >> such as Appender(Skeleton).setThreshold. Is there a way to do this kind >> of thing in log4j 2.x? >> >> We are also doing things like starting up with a hard-coded >> configuration to print-to-console and then, after loading a >> configuration from elsewhere (which may fail, hence logging to the >> console), re-initialing the logging system, with the new setup (e.g. log >> to file, network, etc.). >> >> The migration guide seems to say "you can't do this", but I think there >> reality may be "you can't do it anymore.... in the same way". >> >> Can I get some practical tips for upgrading from log4j 1.x -> 2.x given >> the desire to do some of the things listed above? >> >> Thanks, >> -chris >> >> --------------------------------------------------------------------- >> 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] >