Yes, everything is supported in the Properties format, but the syntax is 
confusing to almost everyone.

Ralph

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

Reply via email to