I believe we can use "Configurator.reconfigure(uri)", however just wanted to make sure if this is the only right way (stable API).
On Tue, Mar 21, 2023 at 4:57 PM Viraj Jasani <vjas...@apache.org> wrote: > Just a follow up on this, do we have replacement for > "LogManager.resetConfiguration" in log4j2? > > > On Sat, Mar 18, 2023 at 11:27 AM Viraj Jasani <vjas...@apache.org> wrote: > >> Ah looks like monitorinterval is supported as per the doc[1]: >> Properties configuration files support the advertiser, monitorInterval, >> name, packages, shutdownHook, shutdownTimeout, status, verbose, and dest >> attributes. >> >> 1. >> https://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax >> >> On Sat, Mar 18, 2023 at 11:14 AM Viraj Jasani <vjas...@apache.org> wrote: >> >>> Thanks Ralph for the recommendations! >>> >>> > First, I strongly recommend you switch from properties to either XML, >>> Yaml, or JSON. >>> >>> The reason why we would still like to stick to properties (at least for >>> now during the migration) is that LOG4J2-3341 allows setting level and >>> appender at once in the properties file. After migration, if there is any >>> better way, we would consider migrating to xml or yaml for sure. Here is >>> the old thread for the reference[1] after which both hbase and hadoop have >>> decided to stick to properties for now. >>> >>> > Note that there are several variations of the initialize method. >>> >>> Sure I think we might be able to use, will explore: >>> public static LoggerContext initialize(final String name, final >>> ClassLoader loader, final URI configLocation) { >>> return initialize(name, loader, configLocation, null); >>> } >>> >>> Even with properties file, is it still possible to configure monitor >>> interval? >>> >>> >>> 1. https://lists.apache.org/thread/gvfb3jkg6t11cyds4jmpo7lrswmx28w3 >>> >>> On Fri, Mar 17, 2023 at 8:59 PM Viraj Jasani <vjas...@apache.org> wrote: >>> >>>> Hi, >>>> >>>> Could you please help with log4j2 replacement for PropertyConfigurator >>>> APIs configureAndWatch and configure? >>>> >>>> For instance, this is the logic we have that we need to migrate to >>>> log4j2: >>>> >>>> >>>> >>>> protected void initLog() throws ServerException { >>>> verifyDir(logDir); >>>> LogManager.resetConfiguration(); >>>> File log4jFile = new File(configDir, name + "-log4j.properties"); >>>> if (log4jFile.exists()) { >>>> PropertyConfigurator.configureAndWatch(log4jFile.toString(), 10 * >>>> 1000); //every 10 secs >>>> log = LoggerFactory.getLogger(Server.class); >>>> } else { >>>> Properties props = new Properties(); >>>> try { >>>> InputStream is = getResource(DEFAULT_LOG4J_PROPERTIES); >>>> try { >>>> props.load(is); >>>> } finally { >>>> is.close(); >>>> } >>>> } catch (IOException ex) { >>>> throw new ServerException(ServerException.ERROR.S03, >>>> DEFAULT_LOG4J_PROPERTIES, ex.getMessage(), ex); >>>> } >>>> PropertyConfigurator.configure(props); >>>> log = LoggerFactory.getLogger(Server.class); >>>> log.warn("Log4j [{}] configuration file not found, using default >>>> configuration from classpath", log4jFile); >>>> } >>>> } >>>> >>>> >>>>