Согласно документам , Log4j2 будет искать файл конфигурации в следующих порядках:
- Log4j будет проверять системное свойство "log4j.configurationFile" и,если установлено, попытается загрузить конфигурацию, используя ConfigurationFactory, который соответствует расширению файла.
- Если не установлено системное свойство, ConfigurationFactory будет искать log4j2-test.properties в classpath.
- Если такой файл не найден, Конфигурация YAML будет искать log4j2-test.yaml или log4j2-test.yml в пути к классам.
- Если такой файл не найден, JSON ConfigurationFactory будет искать log4j2-test.json или log4j2-test.jsn в пути к классам.
- Если такой файл не найден, XML ConfigurationFactory будет искать файл log4j2-test.xml в пути к классам.
- Если файл теста не может бытьРасположенный в свойствах, ConfigurationFactory будет искать log4j2.properties в пути к классам.
- Если файл свойств не можетБудучи расположенным, YAML ConfigurationFactory будет искать log4j2.yaml или log4j2.yml в пути к классам.
- Если не удается найти файл YAML, JSON ConfigurationFactory будет искать log4j2.json или log4j2.jsn в пути к классам.
- Если файл JSON не может быть найден, XML ConfigurationFactory попытается найти log4j2.xml в пути к классам.
- Если файл конфигурации не найден, будет использоваться DefaultConfiguration.Это приведет к тому, что выходные данные журнала перейдут на консоль.
Таким образом, вы можете видеть, что кроме (1), все ищут файл конфигурации из classpath.В стандартном проекте Maven /src/main/resources
является корнем пути к классам. Так что вы можете поместить log4j2.xml
в /src/main/resources
.
В противном случае вы должны явно указать файл конфигурации с помощью log4j.configurationFile
системного свойства:
-Dlog4j.configurationFile=path/to/log4j2.xml