При слишком частой миграции с Log4j 1 на Log4j 2 люди просто смотрят на настройки, сделанные для Log4j 1, и пытаются перенести их на Log4j 2. Это абсолютно неправильный подход.
При миграции с Log4j 1 to Log4j 2 ваш первый шаг должен состоять в том, чтобы собрать требования к ведению журнала. Если у вас есть такие, вы должны взглянуть на то, как Log4j 2 может это реализовать. Log4j 2 содержит много функций, которые не были доступны в Log4j 1, и его архитектура сильно отличается.
Также было бы очень сложно ответить на ваши вопросы выше, не зная, что вы пытаетесь выполнить sh. Вы пытаетесь изменить имя файла во время работы конфигурации? В Log4j 2 имя файла является неизменным в File Appender, потому что оно не может быть изменено потокобезопасным способом. Однако вы можете создать новую конфигурацию с новым FileAppender, настроенным для указания на новый файл.
Что вы подразумеваете под «постепенно»? Log4j 2 позволяет программно создавать конфигурацию несколькими различными способами. Страница Programmati c конфигурации в Log4j описывает, как это сделать. Что означает, что вы хотите использовать log4j2-new. xml для постепенного обновления конфигурации? Вы хотите добавить в конфигурацию или заменить ее? Log4j позволяет составные конфигурации, так что вы можете объединить конфигурации. Сначала вы должны создать свою конфигурацию, затем XMLConfiguration, объединить их вместе в CompositeConfiguration и затем передать ее одному из методов Configurator классов Configurator. Однако это может затруднить вам автоматическую настройку c в случае необходимости изменения файла конфигурации.
Часто люди обнаруживают, что им не требуется программная c настройка. Log4j предоставляет Appenders, которые динамически создают другие appenders, PatternSelector, который позволяет форматировать записи на основе атрибутов в событии журнала, Lookups, которые позволяют динамически вводить значения в конфигурацию во время выполнения, и другие функции.
Итак, еще раз, прежде чем приступить к переходу с Log4j 1 на Log4j 2, сначала оцените ваши требования, а затем посмотрите на существующие функции Log4j 2, чтобы определить, кому их удовлетворить. Если у вас есть вопросы по этому поводу, не стесняйтесь задавать их здесь, в Stackoverflow или по электронной почте в список рассылки пользователя Log4j.