Я использую следующую конфигурацию для log4j2.xml с весенней загрузкой для входа в журналы Apache Tomcat:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
<Properties>
<Property name="logdir">${sys:catalina.base}/logs</Property>
<Property name="layout">%d [%t] %-5p %c- %m%n</Property>
</Properties>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="${layout}"/>
</Console>
<RollingFile name="FILEAPPENDER"
fileName="${logdir}/doc-reader.log"
filePattern="${logdir}/doc-reader.%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="${layout}"/>
<Policies>
<SizeBasedTriggeringPolicy size="1 KB" />
</Policies>
<DefaultRolloverStrategy max="4"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="FILEAPPENDER"/>
</Root>
<Logger name="com.mypackage"
level="info"
additivity="false">
<AppenderRef ref="FILEAPPENDER"/>
</Logger>
</Loggers>
</Configuration>
Эта конфигурация может создавать как журналы, так и сжатые журналы в папке logs / tomcat.,И он также записывает сгенерированные системой сообщения, такие как:
2018-12-11 11:16:20,359 [http-nio-8089-exec-1] INFO org.springframework.web.servlet.DispatcherServlet- Completed initialization in 9 ms
Но когда я пытаюсь сделать запись с помощью моего контроллера, он не может записать в файлы журнала:
package com.mypackage.controller;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author abhishekkeshri 07/12/2018
*/
@RestController
public class DevController {
private static final Logger LOGGER = LogManager.getLogger(DevController.class);
@RequestMapping(value = "/health")
public String getCurrentDateTime() {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
LOGGER.info("Info : number is " + dtf.format(now));
LOGGER.warn("Warning : number is " + dtf.format(now));
LOGGER.debug("Debug : number is " + dtf.format(now));
LOGGER.error("Error : number is " + dtf.format(now));
LOGGER.fatal("Fatal : number is " + dtf.format(now));
return(dtf.format(now));
}
}
У меня есть различныеРешения, предложенные по различным поискам Google, но безрезультатно, поэтому подумал о том, чтобы опубликовать его как вопрос.Что я здесь не так делаю?
Структура моего проекта:
doc-reader > src > main > java > com.mypackage > controller > DevController
doc-reader > src > main > java > com.mypackage > startup > DRStartupCacheLoader