Как остановить DEBUG логи Kafka, когда библиотека Kafka используется как модуль Keycloak

Вопрос или проблема

Модуль keycloak (включая производителя kafka) развернут на сервере “keycloak-4.8.1.Final”.

Моя проблема:

Несмотря на то, что я использовал уровень журнала INFO, из библиотеки Kafka ведутся журналы DEBUG. Я хочу остановить беспорядочные журналы отладки Kafka в файле журнала Keycloak. Можете кто-нибудь, ПОЖАЛУЙСТА, помочь мне решить эту проблему.

Я подозреваю, что может быть конфликт в механизмах журналирования, используемых в Keycloak (jboss-logging) и Kafka (slf4j).

Пример журнала:

10:10:40,642 INFO  [stdout] (kafka-producer-network-thread | InternalUserProvisioningProducer) 47473973 [kafka-producer-network-thread | InternalUserProvisioningProducer] DEBUG org.apache.kafka.clients.NetworkClient  - [Producer clientId=InternalUserProvisioningProducer] Отправка запроса метаданных (type=MetadataRequest, topics=) на узел localhost:9092 (id: 0 rack: null)
10:10:40,644 INFO  [stdout] (kafka-producer-network-thread | InternalUserProvisioningProducer) 47473975 [kafka-producer-network-thread | InternalUserProvisioningProducer] DEBUG org.apache.kafka.clients.Metadata  - Обновленная версия метаданных кластера 28 до Cluster(id = 5N8ICZgiS-GewacYHMDtlg, nodes = [localhost:9092 (id: 0 rack: null)], partitions = [])

Библиотека Kafka (в pom.xml):

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.12</artifactId>
        <version>1.0.1</version>
    </dependency>

Конфигурация модуля Keycloak (module.xml):

<module xmlns="urn:jboss:module:1.5" name="com.my.core.internal-user-authenticator-module">
<properties>
    <property name="jboss.api" value="private"/>
</properties>

<resources>
    <resource-root path="internal-user-authenticator-module-0.0.1-SNAPSHOT.jar"/>
</resources>

<dependencies>
    <module name="org.keycloak.keycloak-core"/>
    <module name="org.keycloak.keycloak-common"/>
    <module name="org.keycloak.keycloak-services"/>
    <module name="org.keycloak.keycloak-server-spi"/>
    <module name="org.keycloak.keycloak-server-spi-private"/>
    <module name="javax.api"/>
    <module name="javax.ws.rs.api"/>
    <module name="javax.persistence.api"/>
    <module name="org.jboss.resteasy.resteasy-jaxrs"/>
    <module name="com.sun.xml.bind"/>
    <module name="javax.xml.bind.api"/>
    <module name="org.jboss.resteasy.resteasy-jaxb-provider"/>
    <module name="org.wildfly.security.elytron"/>
    <module name="org.bouncycastle"/>
    <module name="com.fasterxml.jackson.core.jackson-core" export="true"/>
    <module name="com.fasterxml.jackson.core.jackson-databind" export="true"/>
</dependencies>

Конфигурация журналирования keycloak (в standalone.xml):

<subsystem xmlns="urn:jboss:domain:logging:6.0">
        <console-handler name="CONSOLE">
            <level name="INFO"/>
            <formatter>
                <named-formatter name="COLOR-PATTERN"/>
            </formatter>
        </console-handler>
        <periodic-rotating-file-handler name="FILE" autoflush="true">
            <formatter>
                <named-formatter name="PATTERN"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="server.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
        <logger category="com.arjuna">
            <level name="WARN"/>
        </logger>
        <logger category="org.jboss.as.config">
            <level name="DEBUG"/>
        </logger>
        <logger category="sun.rmi">
            <level name="WARN"/>
        </logger>
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="FILE"/>
            </handlers>
        </root-logger>
        <formatter name="PATTERN">
            <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
        </formatter>
        <formatter name="COLOR-PATTERN">
            <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
        </formatter>
    </subsystem>

Спасибо….

Это сработало, как только был добавлен файл log4j.properties в развертывание Keycloak.

log4j.properties:

log4j.rootLogger=INFO

standalone.sh ИЛИ standalone.conf:

-Dlog4j.configuration=file:”$JBOSS_CONFIG_DIR”/log4j.properties

Ответ или решение

Чтобы остановить вывод отладочных сообщений (DEBUG) библиотеки Kafka при использовании её в качестве модуля Keycloak, следует обратить внимание на несколько аспектов конфигурации. Рассмотрим шаги, которые помогут вам решить эту проблему.

1. Проверка Конфигурации Журналирования в Keycloak

Ваш файл конфигурации Keycloak (standalone.xml) уже настроен на уровень日志ирования INFO. Тем не менее, уровень логирования для библиотек, таких как Kafka, может быть установлен отдельно. Ваша текущая конфигурация показывает, что вы контролируете только несколько категорий. Вам нужно дополнительно настроить уровень логирования для собственных компонентов Kafka.

Вам необходимо добавить уровень логирования для самой библиотеки Kafka и её компонентов в секции логирования standalone.xml, чтобы исключить отладочные сообщения. Добавьте следующий фрагмент кода в раздел <subsystem xmlns="urn:jboss:domain:logging:6.0">:

<logger category="org.apache.kafka">
    <level name="WARN"/>
</logger>

После этих изменений ваша конфигурация должна выглядеть примерно так:

<logger category="org.apache.kafka">
    <level name="WARN"/>
</logger>

2. Использование Log4j для Настройки Логирования

Судя по вашему комментарию, файлы конфигурации Log4j также могут помочь в вашей ситуации. Убедитесь, что файл log4j.properties присутствует в вашем развертывании Keycloak и применяется правильно. В содержимом этого файла укажите следующий код:

log4j.rootLogger=INFO, console
log4j.logger.org.apache.kafka=WARN

3. Альтернативная Конфигурация в standalone.sh или standalone.conf

Для того чтобы ваша конфигурация Log4j была правильно применена, убедитесь, что в файле конфигурации запуска Keycloak (standalone.sh или standalone.conf) установлена переменная:

-Dlog4j.configuration=file:"$JBOSS_CONFIG_DIR"/log4j.properties

4. Сборка и Запуск

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

5. Проверка Результатов

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

Заключение

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

Если у вас есть какие-то дополнительные вопросы или нужна дальнейшая помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...