Я хочу использовать Spring boot и log4j2.
У меня есть этот pom:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
Это мой основной класс:
@Component("batchLauncher")
@Import({ MyConfiguration.class })
public class MyLauncher implements CommandLineRunner {
private static Logger log = LogManager.getLogger(MyLauncher.class);
@Autowired
MyController myController;
public static void main(String[] args) {
log.info("STARTING");
SpringApplication.run(MyLauncher.class, args);
log.info("FINISHED");
}
@Override
public void run(String... args) throws Exception {
log.info("START Batch");
MyController.start();
log.info("END Batch");
}
}
Я запускаюjar с этой опцией:
-Dlog4j.configurationFile=C:\log4j2.properties
При запуске приложения консоль показывает мне:
DEBUG StatusLogger Reconfiguration complete for context[name=18b4aac2] at URI C:\log4j2.properties (org.apache.logging.log4j.core.LoggerContext@72057ecf) with optional ClassLoader: null
DEBUG StatusLogger Shutdown hook enabled. Registering a new one.
DEBUG StatusLogger LoggerContext[name=18b4aac2, org.apache.logging.log4j.core.LoggerContext@72057ecf] started OK.
2019-02-08 14:57:31.047 INFO [main] [it.batch.MyLauncher] [main] [it.batch.MyLauncher.main] - STARTING THE APPLICATION
DEBUG StatusLogger Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@6c80d78a
DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin.
DEBUG StatusLogger Loaded configuration from
...
DEBUG StatusLogger LoggerContext[name=18b4aac2, org.apache.logging.log4j.core.LoggerContext@72057ecf] started OK with configuration XmlConfiguration[location=jar:file:/C:/Users/G0426/.m2/repository/org/springframework/boot/spring-boot/2.1.2.RELEASE/spring-boot-2.1.2.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml].
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.2.RELEASE)
2019-02-08 14:57:31.753 INFO 13496 --- [ main] i.f.c.c.o.b.Info
Как видно из журналов, log4j2 загружает мой log4jфайл свойств до строки
SpringApplication.run(MyLauncher.class, args);
Предыдущая строка записывается в файл журнала, после чего запускается SpringApplication.run (...), загружается второй экземпляр / контекст и log4j2 начинает запись с использованием конфигурации по умолчаниюнаходится по адресу:
file:/C:/Users/G0426/.m2/repository/org/springframework/boot/spring-boot/2.1.2.RELEASE/spring-boot-2.1.2.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml
Что я делаю не так?
Спасибо.