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); >>> } >>> } >>> >>> >>>