Логирование

В этой статье вы узнаете, как отслеживать логи, какие уровни логирования используются в DC CMS и как их настраивать.

При использовании DC CMS генерируются логи из разных источников. Логи служат ценным ресурсом для мониторинга состояния DC CMS, охватывая такие детали, как успешность действий/запросов, а также предупреждения и сообщения об ошибках. Они играют ключевую роль в предоставлении информации о возможных проблемах системы и упрощении отладки ошибок. Вы можете найти логи либо в $CMS_DIR/authoring/logs/, либо в $CMS_DIR/delivery/logs/, в зависимости от используемого окружения (authoring или delivery). Эффективное использование логов является важным аспектом обслуживания проекта, помогая отслеживать производительность системы.

DC CMS поставляется с сервером приложений Tomcat, а MongoDB включен в двоичный архив. Логи разделены на три папки:

  1. tomcat
  2. deployer
  3. mongodb

Отслеживание логов из оболочки/командной строки

Последние сообщения из логов могут быть отображены путем перехода к файлам логов. Ниже отображен список файлов логов и их расположение:

Файл Расположение
Файл логов Tomcat $CMS_LOGS_DIR/tomcat/catalina.out
Файл логов Tomcat за конкретную дату $CMS_LOGS_DIR/tomcat/catalina.%Y-%M-%D.log
Файл логов CMS Deployer $CMS_LOGS_DIR/deployer/cms-deployer.out
Файл логово проектов CMS Deployer $CMS_LOGS_DIR/deployer/%SITE-preview.log
Файл логов MongoDB $CMS_LOGS_DIR/mongodb/

Для delivery-окружения: $CMS_LOGS_DIR = $CMS_DIR/delivery/logs
Для authoring-окружения: $CMS_LOGS_DIR = $CMS_DIR/authoring/logs

Описание логов

Логи Tomcat

Файл: catalina.out

Файл catalina.out служит в качестве подробного журнала логов, фиксирующего все сообщения, связанные с выполнением Java-пакетов в DC CMS. Его основная цель - отслеживать результаты запросов и действий, а также записывать информативные предупреждения и сообщения об ошибках. В этой же папке находятся логи Catalina, полезные для просмотра событий, произошедших в конкретные даты. В той же папке могут размещаться и другие дополнительные файлы логов, которые могут представлять для вас интерес в зависимости от того, что вы исследуете/отлаживаете. Однако для регулярной проверки статуса системы предпочтительно использовать файл catalina.out.

Для отслеживания файла логов catalina в authoring-окружении используйте следующую команду:

tail -f authoring/logs/tomcat/catalina.out

Copy-icon

Точно так же для мониторинга файла логов catalina в delivery-окружении используйте команду:

tail -f delivery/logs/tomcat/catalina.out

Copy-icon

Эти команды предоставляют непрерывный поток обновлений из файла catalina.out, обеспечивая своевременное наблюдение за активностью системы.

Логи Deployer

Файл: cms-deployer.out

В данном файле содержатся все сообщения, связанные с CMS Deployer. В той же папке, что и файл логов cms-deployer.out, вы найдете логи Deployer, специфичные для каждого проекта, перечисленные в таблице выше.

Для отслеживания файла логов в authoring-окружении используйте следующую команду:

tail -f authoring/logs/deployer/cms-deployer.out

Copy-icon

Для отслеживания файла логов в delivery-окружении используйте команду:

tail -f ./delivery/logs/deployer/cms-deployer.out

Copy-icon

Изменение расположения папки с данными и логами

По умолчанию папки с данными и логами находятся по пути {DC-CMS-install-directory}/{env}/data и {DC-CMS-install-directory}/{env}/logs соответственно. Если вы хотите изменить такое расположение измените следующие строки, указав желаемые местоположения для папок данных ($CMS_ROOT/data) и логов ($CMS_ROOT/logs):

# Locations variables
export CMS_LOGS_DIR=${CMS_LOGS_DIR:="$CMS_ROOT/logs"}
export CMS_DATA_DIR=${CMS_DATA_DIR:="$CMS_ROOT/data"}

Copy-icon

Переопределение уровней логирования

В DC CMS существуют шесть уровней логирования,которые определяют, какие сообщения будут записаны в журнале логов. Ниже перечислены доступные уровни логирования (от самого низкого до самого высокого):

  1. all: отображает все уровни логирования, включая любые пользовательские уровни логирования, которые были определены
  2. trace: отображает дополнительную информацию для логов уровня отладки
  3. debug: показывает детали, полезные для отладки
  4. info: регистрирует информационные сообщения, такие как прогресс работы приложения
  5. warn: регистрирует потенциально опасные ситуации, которые могут привести к проблемам
  6. error: регистрирует все, что может быть критичным для работы или вызвать проблему

Установка более низких уровней логирования приводит к более подробным записям в журнале. По умолчанию DC CMS устанавливает классы и пакеты на уровень INFO.

Есть случаи, когда вам может потребоваться более подробная информация в логах, особенно при устранении неполадок. Изменение уровней логирования позволяет настраивать уровень детализации в соответствии с вашими конкретными требованиями.

Чтобы изменить уровень логирования, вы можете:

Установка временных уровней логирования

Уровни ведения логов могут быть временно установлены через пользовательский интерфейс.

Для этого:

1. Нажмите на значок меню навигации в правом верхнем углу экрана.

Изображение статьи

2. Перейдите в Уровни логирования.

Изображение статьи

3. Найдите класс/пакет, для которого вы хотите изменить уровень ведения логов, затем установите для него желаемый уровень логирования.

Изображение статьи

Изменения уровней логирования через CMS Studio вступают в силу только при повторном запуске приложения.

Установка постоянных уровней логирования Copy-icon

Чтобы навсегда изменить уровни логирования, вам потребуется обновить некоторые настройки в вашей установке на сервере. Чтобы внести изменения, вам нужно добавить/изменить файл конфигурации ведения логов CMS_HOME/bin/apache-tomcat/shared/classes/cms/{module}/extension/logging.xml, где {module} может быть одним из следующих: studio или engine.

Следуйте этим шагам:

Шаг 1: Определите целевой пакет/класс
Определите пакет или класс, для которого вы собираетесь изменить уровни логирования. Вы можете установить уровни логирования на уровне пакета, например, ru.dc.cms.studio.api.v1.dal.DependencyMapper, что повлияет на все классы в этом пакете. В противном случае установите уровни логирования на уровне класса для конкретных настроек класса (например, ru.dc.cms.studio.api.v1.dal.DependencyMapper.calculatePublishingDependenciesForList).

Шаг 2: Добавьте требуемую конфигурацию переопределения в файл логирования

Добавьте необходимые настройки переопределения в файл logging.xml, расположенный по пути CMS_HOME/bin/apache-tomcat/shared/classes/cms/studio/extension/logging.xml. Выберите уровни логирования: all, trace, debug, info, warn, error или off. All - самый низкий уровень логирования, error - наивысший. Более низкие уровни логирования приводят к более подробным логам.

Чтобы установить для определенного класса более высокий уровень логирования, добавьте следующие строки:

<Logger name="ru.dc.cms.studio.api.v1.dal.DependencyMapper.calculatePublishingDependenciesForList" level="debug"/>

Copy-icon

Для установки для целого пакета:

<Logger name="ru.dc.cms.studio.api.v1.dal.DependencyMapper" level="debug"/>

Copy-icon

Настройка уровней логирования завершена. Изменения в файле конфигурации логирования автоматически применяются через несколько секунд.

Подробнее о журнале логирования можно узнать здесь.

Использование appender Copy-icon

Каждый компонент в DC CMS использует Apache Log4j2 для ведения логов, что обеспечивает беспроблемную интеграцию пользовательских конфигураций для изменения поведения логирования. Чтобы использовать встроенные appenders из Log4j2, такие как JDBC или SMTP appenders, достаточно просто включить их в соответствующий файл конфигурации. Обратитесь к официальной документации для полной информации о доступных appenders.

Конфигурация логирования Copy-icon

Вы можете обновить конфигурацию ведения логов в зависимости от компонента DC CMS, который вам необходимо изменить:

  • CMS Engine: $CMS_HOME/bin/apache-tomcat/shared/classes/cms/engine/extension/logging.xml
  • CMS Studio: $CMS_HOME/bin/apache-tomcat/shared/classes/cms/studio/extension/logging.xml
  • CMS Search: $CMS_HOME/bin/apache-tomcat/shared/classes/cms/search/extension/logging.xml
  • CMS Deployer: $CMS_HOME/bin/cms-deployer/logging.xml

Настоятельно рекомендуется добавлять только новые appenders или вносить небольшие изменения в существующие. Если существующие appenders удаляются или конфигурация нарушается, некоторые компоненты DC CMS могут перестать работать.

Добавление appender

1. Разместите необходимые файлы JAR в соответствующих папках:

  • для CMS Engine, Studio или Search используйте $CMS_HOME/bin/apache-tomcat/shared/lib
  • для CMS Deployer используйте $CMS_HOME/bin/cms-deployer/lib

2. Обновите требуемую конфигурацию логирования, чтобы добавить пользовательский appender. Например, если имя пользовательского appender - AwesomeAppender, а класс находится в пакете com.custom.logging, конфигурация будет выглядеть следующим образом:

<Configuration packages="com.custom.logging">
  <Appenders>
    <!-- existing appenders -->
    <AwesomeAppender name="AwesomeAppender" someConfig="true" otherParam="5"/>
  </Appenders>
  <Loggers>
    <!-- existing loggers -->
    <Root level="info">
      <!-- existing refs -->
      <AppenderRef ref="AwesomeAppender" />
    </Root>
  </Loggers>
</Configuration>

Copy-icon

Чтобы пользовательские appenders были загружены правильно, все зависимости должны быть включены в JAR-файл, либо также скопированы необходимые JAR-файлы. В большинстве случаев вам потребуется также скопировать log4j-api-{version}.jar и log4j-core-{version}.jar.

Поскольку Log4j2 загружает классы только во время инициализации при наличии изменений в JAR пользовательского appender, они не будут обнаружены функцией повторной конфигурации, и вам придется перезапустить контекст приложения или Tomcat.

Логирование cms.sh-скрипта

Чтобы записать выходные данные скрипта cms.sh в файл логов, установите переменную окружения CMS_SCRIPT_LOG, указав путь к файлу логов, например, следующим образом:

export CMS_SCRIPT_LOG=${CMS_SCRIPT_LOG:="/your/path/output-file.log}"

Copy-icon