Проблема: есть maven-проект, в pom-файле которого указано:
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>*.*</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugins>
<build> Т.е. используем плагин **spring-boot-maven-plugin**, и исключаем из проекта папку **${basedir}/src/main/resources**. Если у нас есть файл **application.properties** в котором указаны свойства для инициализации компонент, приложение из idea не запуститься. Мы получим ошибки о том, что нам не удалось инициализировать некоторые из бинов. **Решение:** В свойствах меню **Run => Edit configuration** выберем нашу конфигурацию запуска и в **VM options** укажем полный путь к каталогу где хранится файл **application.properties**:
-Dspring.config.location=path
Значение параметров ENCRYPT_KEY_STORE_LOCATION, ENCRYPT_KEY_STORE_PASSWORD, ENCRYPT_KEY_STORE_ALIAS, ENCRYPT_KEY_STORE_SECRET передаем как параметры jvm при запуске сервиса и config-server:
TRACE на этом уровне выводятся все сообщения уровня TRACE, DEBUG, INFO, WARN, ERROR.
DEBUG на этом уровне выводятся все сообщения уровня DEBUG, INFO, WARN, ERROR.
INFO на этом уровне выводятся все сообщения уровня INFO, WARN, ERROR.
WARN на этом уровне выводятся все сообщения уровня WARN, ERROR.
ERROR на этом уровне выводятся все сообщения уровня ERROR.
По умолчанию для приложения включен уровень INFO.
Для возможности динамического изменения уровня логирования (без пересборки приложения) в конфигурацию logback добавлена возможность поддержки jmx-конфигурирования:
Запустить KeyManager (утилита по адресу App_IBM_MQ_Install \bin\strmqikm.exe, где App_IBM_MQ_Install – установочная директория сервера IBM MQ)
Создать хранилище. Указать путь, где будет располагаться хранилище. Рекомендуется сохранять файлы хранилища в папке ssl менеджера очередей, к примеру: C:\Program Files (x86)\IBM\WebSphere MQ\Qmgrs\ONE!QM\ssl.
При указании пароля на хранилище обязательно выбрать опцию «Сохранить пароль в файле».
Создать запрос на выпуск сертификата с параметрам
Свой сертификат загружаем в Personal Certificate путем Recieve
Cертификат удостоверяющего центра загружаем в Signer Certificate
Указываем путь к созданному хранилищу для менеджера очередей без расширения .kdb
Для канала настраиваем раздел MCA: указываем пользователя, у которого есть доступ к каналу и очередям менеджера очередей, при этом он должен быть заведен на уровне ОС
Для канала настраиваем раздел SSL:
SSL Cipher Spec: параметр определяющий какой тип шифрования используется. Параметр должен быть одинаковым на обоих сторонах, тех кто запрашивает соединение и на уровне MQ, куда приходит запрос.
По умолчанию доступна кодировка UTF-8, но jackson по умолчанию исключает все не ascii-символы. Поэтому необходимо переопределить поведение, создав класс, который имплементирует JsonFactoryDecorator и отключает эту опцию.
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import net.logstash.logback.decorate.JsonFactoryDecorator;
public class NoEscapingJsonFactoryDecorator implements JsonFactoryDecorator {
@Override
public MappingJsonFactory decorate(MappingJsonFactory factory) {
return (MappingJsonFactory) factory.disable(JsonGenerator.Feature.ESCAPE_NON_ASCII);
}
}
Затем, конфигурируем encoder, используя созданный класс.
#######################################################
# Конфигурирование логирования
######################################################
logging:
config: classpath:logback-prod.xml
# Каталог для хранения логов
logDir: D:/LOGS
# История в днях, максимальный объем логов распространяется на количество дней
maxHistory: 30
# Максимальный размер логов
totalSizeCap: 40KB
# Максимальный размер одного файла
maxFileSize: 15KB
# Шаблон выводимой информации
filePattern: "%d %-4relative [%thread] %-5level %logger{35} - %msg%n"
Настраиваемые для логирования свойства:
logging.config – имя и расположение конфигурационного файла logback.
logging.logDir – абсолютный путь к каталогу, где размещаются конфигурационные файлы.
logging.maxHistory – количество дней, в которых хранится история, при условии, что не достигнуты другие предельные величины для логов (общий размер файлов). Максимальный объем логов распространяется на заданное количество дней.
logging.totalSizeCap – максимальный размер всех лог-файлов для сервиса.
logging.maxFileSize – максимальный размер одного лог-файла.
logging.filePattern - шаблон выводимой информации в логе.
Очищение старых логов происходит в момент, когда создается новый лог-файл, так у предыдущего превышен размер, заданный в параметре maxFileSize. В этот момент происходит проверка, что общий объем логов за число дней в maxHistory не превышает объем, указанный в totalSizeCap. Если условие проверки выполняется, очищаются лишние логи в пределах дней maxHistory до объема totalSizeCap. Поэтому, если мы хотим подчищать хвосты от логов, которые остались в периоды простоя сервсиов необходимо расширить количество дней в maxFileSize.
По предварительным настроенным параметрам хранение логов выглядит так: