Как установить динамический уровень журнала в приложении Spring-MVC? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу установить динамический уровень журнала в моем проекте spring-mvc.я хочу установить его динамически, чтобы без перезапуска сервера я мог изменить уровень журнала.мы можем использовать apllication.propertes или получить уровень журнала из базы данных.мой сервер содержит слишком много журналов моего приложения.Я хочу остановить это, и когда я хочу показать журналы, я просто изменяю уровень журнала из базы данных или любым другим способом.Но я хочу достичь этого процесса без перезапуска моего сервера.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="DEV_HOME" value="${catalina.base}/logs" />


    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">

            <Pattern>
                %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
            </Pattern>

        </layout>
    </appender>
    <root level="error"> 
        <appender-ref ref="STDOUT" />
    </root>


  <appender name="FILE2" class="ch.qos.logback.core.FileAppender">

                 <file>${DEV_HOME}/SMPPIN.log</file>
               <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history -->
      <maxHistory>30</maxHistory>

       <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 100MB -->
        <maxFileSize>1MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>


                  </rollingPolicy>
        <!-- <param name="File" value="SMPPIN.log"/> orther options ${user.home}
                 <param name="MaxFileSize" value="15000KB"/>
                 <param name="MaxBackupIndex" value="30"/>
                        <param name="append" value="true" /> -->

    <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>


     <logger name="SMPPINFO" level="info" additivity="false">

          <appender-ref ref="FILE2"/>         
        </logger>

</configuration>

1 Ответ

0 голосов
/ 07 июня 2018

Если вы используете пружинную загрузку , то эта функция доступна с пружинным приводом.

Просто подключите привод (через систему сборки), и вы получите некоторые конечные точкидоступный для вашего приложения, один из них позволяет динамически изменять уровень журнала без перезапуска.

Конечно, когда перезапуск будет выполнен, конфигурация вернется обратно.

Соответствующий пример можно найти здесь например.

Итог, просто вызовите следующую конечную точку, и вы настроены

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/loggers/ROOT

Если вы не используете пружинную загрузку, эта функция по умолчанию недоступна, поэтому вам придется сделать это самостоятельно.

Существует множество различных подходов, вот некоторые из них:

  • Поскольку вы используете logback, вы можете воспользоваться его конфигуратором JMX: см. Пример Здесь Идея проста: вы конфигурируете logback для предоставления некоторых mbeans-компонентов JMX и подключения к вашему приложению через jconsole /Jvisualvm или любойдругой клиент по вашему выбору, который может работать с JMX

  • Вы можете использовать программный доступ к регистратору и создать некоторую конечную точку (HTTP), которая будет просто использовать что-то вроде:

    Logger logger = ...;

    logger.setLevel (Level.DEBUG);

  • Работает в сочетании с методом JMX.Вы можете использовать проект "jolokia", чтобы открыть http API через JMX, если вы не можете легко получить доступ к JMX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...