Создание приложения для начальной загрузки с log4j2 logger и сервером: wildfly10 / jboss7.1.Я добавил «системное свойство»: «loglevel» из Конфигурация: Системные свойства и смог получить к нему доступ из приложения весенней загрузки.Я вызвал это системное свойство в log4j2.xml, чтобы установить уровень журнала.log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error" monitorInterval="30">
<Properties>
<Property name="basePath">D://propertieslog</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/acweb.log" filePattern="${basePath}/acweb-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<Jdbc name="databaseAppender" tableName="APPLICATION_LOG">
<Filters>
First deny warn, error and fatal messages
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="DEBUG" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL" />
Then accept info, warn, error, fatal and deny debug/trace
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<ConnectionFactory class="path" method="getDatabaseConnection" />
<Column name="LOGLEVEL" pattern="%level" />
<Column name="LOGGER" pattern="%logger" />
<Column name="MESSAGE" pattern="%message" />
</Jdbc>
</Appenders>
<loggers>
<Root level="${sys:loglevel:-ERROR}">
<appender-ref ref="console" />
<appender-ref ref="fileLogger" />
<appender-ref ref="databaseAppender" />
</Root>
</loggers>
</configuration>
Класс контроллера:
@GetMapping("/dashboard")
public ModelAndView welcomeMethod(HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("token") final AccessToken accessToken) {
if(null==accessToken.getJwtToken()) {
logger.trace("A TRACE Message");
logger.debug("A DEBUG Message");
logger.info("An INFO Message");
logger.warn("An WARN Message");
logger.warn("Printing system property1:"+ System.getProperty("loglevel"));
logger.error("An ERROR Message");
logger.error("Printing system property1:"+ System.getProperty("loglevel"));
return new ModelAndView("redirect:launchApp");
}
Проблема при изменении системного свойства из консоли wildfly, это отражается в журналах классов Java,но это не отражается в log4j2.xml.Уровень журнала в log4j2.xml остается тем же, который был задан при сборке приложения.
установите системное свойство уровня журнала равным "WARN", соберите проект и разверните его.Журналы приведены ниже:
[WARN ] 2018-09-26 15:13:05.787 [default task-7] WelcomeController - An WARN Message
[WARN ] 2018-09-26 15:13:05.792 [default task-7] WelcomeController - Printing system property1:WARN
[ERROR] 2018-09-26 15:13:05.793 [default task-7] WelcomeController - An ERROR Message
[ERROR] 2018-09-26 15:13:05.793 [default task-7] WelcomeController - Printing system property1:WARN
После того же развертывания изменило системное свойство уровня журнала на «INFO», но журналы не изменились до уровня INFO:
[WARN ] 2018-09-26 15:15:34.933 [default task-11] WelcomeController - An WARN Message
[WARN ] 2018-09-26 15:15:34.933 [default task-11] WelcomeController - Printing system property1:INFO
[ERROR] 2018-09-26 15:15:34.935 [default task-11] WelcomeController - An ERROR Message
[ERROR] 2018-09-26 15:15:34.935 [default task-11] WelcomeController - Printing system property1:INFO