Я использую log4j2 и имею свою конфигурацию в log4j2.xml (в пути к классам, поэтому он автоматически настроен)
В этом конкретном случае я хочу создать отдельные файлы журналов для каждого процесса.
У меня есть структура с несколькими пакетами и несколькими классами. У всех есть такие утверждения, как:
Logger logger = LogManager.getLogger(getClass());
Допустим, у меня теперь есть три процесса A, B и C. Как настроить log4j для получения трех выходных файлов A.log, B.log и C.log и включить вызовы журналов, сделанные в классах framework?
Я также хочу иметь возможность записывать отдельные пакеты/классы в другие приложения для журналов, если мне нужно отлаживать и т.д., Поэтому я бы предпочел сохранить аргумент getClass(), упомянутый выше.
Все идеи приветствуются!
Вы можете добавить нужное имя во время создания процесса, добавив аргумент виртуальной машине Java. например:
java -Dcustom.log.name=/tmp/logs/A.log ... ...
Таким образом, вы можете использовать его:
<File name="Application" fileName="${custom.log.name}">
Подробнее см. В руководстве пользователя Apache Log4j 2 [ PDF ].
Дайте каждому процессу собственный файл конфигурации. Укажите различные пути в этих конфигурациях.
Вы можете указать полный путь к файлу конфигурации с помощью этого системного свойства: -Dlog4j.configurationFile=path/to/log4j2.xml