Записывать запрос Elasticsearch в файл журнала для эластичного поиска весенних данных.

Я пытаюсь иметь несколько файлов журнала для моего весеннего загрузочного приложения. Я настроил файл logback.xml. Я могу добавить запрос данных весеннего спящего режима в свой файл журнала. Но когда я попытался добавить журнал запросов elasticsearch в свой файл журнала, созданный репозиторием spring-data-elasticsearch, я не получил никакого журнала в файле. Я добавил это в свой файл logback.xml:

 <configuration>

    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{40}.%M - %msg%n" />


    <property name="APP_LOG_ROOT" value="/mylog/log"/>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="applicationLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${APP_LOG_ROOT}/application.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${APP_LOG_ROOT}/application.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy

                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <maxFileSize>5MB</maxFileSize>

            </timeBasedFileNamingAndTriggeringPolicy>

            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>


    <appender name="hibernateLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${APP_LOG_ROOT}/hibernate.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${APP_LOG_ROOT}/hibernate.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy

                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <maxFileSize>5MB</maxFileSize>

            </timeBasedFileNamingAndTriggeringPolicy>

            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <appender name="databaseLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${APP_LOG_ROOT}/database.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${APP_LOG_ROOT}/database.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy

                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <maxFileSize>5MB</maxFileSize>

            </timeBasedFileNamingAndTriggeringPolicy>

            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>


    <!--<logger name="org.hibernate.type.descriptor.sql" level="trace">-->
    <logger name="org.hibernate.SQL" level="trace" additivity="false">
        <appender-ref ref="hibernateLog" />
    </logger>

    <logger name="org.springframework.data.elasticsearch.client.WIRE" level="trace">
        <appender-ref ref="databaseLog" />
        <appender-ref ref="console" />
    </logger>
    <logger name="com.test" level="info">
        <appender-ref ref="applicationLog" />
        <!--<appender-ref ref="console" />-->
    </logger>

    <root level="info">
        <appender-ref ref="console" />
    </root>


</configuration>

Я также пробовал здесь

<logger name="org.springframework.data.elasticsearch.core.*" level="debug" additivity="false">
            <appender-ref ref="databaseLog" />
            <appender-ref ref="console" />
        </logger>

Но оба не работали. Как это решить? Я не хочу задавать их из файла свойств, так как не знаю, как настроить ведение журнала для нескольких файлов из файла .properties
Другой вопрос: если я несколько раз ссылаюсь на один и тот же log-appender для нескольких пакетов, будет ли это любая проблема?


person user404    schedule 02.06.2021    source источник


Ответы (1)


Вы можете включить ведение журнала транспортного уровня, чтобы увидеть, что на самом деле отправляется и принимается с сервера.

Вы можете включить его, используя регистратор ниже:

<logger name="org.springframework.data.elasticsearch.client.WIRE" level="trace"/>

OR

Вы можете добавить следующее свойство в файл application.properties:

logging.level.org.springframework.data.elasticsearch.client.WIRE = trace

См. документы Spring

Я протестировал это решение на своей локальной машине, его запрос на печать и ответ в журналах. Я использую загрузочную версию RestHighLevelClient и Spring — 2.2.7.RELEASE.

Пожалуйста, посмотрите мой файл logback.xml:

<configuration>
    <property name="LOGS" value="./logs" />

    <appender name="databaseLog"
        class="ch.qos.logback.core.FileAppender">
        <file>${LOGS}/spring-data-elasticsearch.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>
    </appender>

    <logger
        name="org.springframework.data.elasticsearch.client.WIRE"
        level="trace">
        <appender-ref ref="databaseLog" />
    </logger>
</configuration>
person pcsutar    schedule 02.06.2021
comment
Спасибо за вашу помощь. Я попробовал это. Да, он печатает журнал на консоли, но не записывает в мой файл журнала, как я уже упоминал в вопросе. Я могу заверить, что мой logback.xml с другими конфигурациями в порядке, так как я могу писать в том же журнале appendar- databaseLog - person user404; 02.06.2021
comment
Привет @ user404, я могу записывать журналы в файл. Я добавил в ответ свой файл logback.xml. Пожалуйста, проверьте и дайте мне знать, если вы по-прежнему не можете записывать журналы в файл. - person pcsutar; 02.06.2021
comment
не могли бы вы проверить мой файл logback.xml, который я добавил сейчас? - person user404; 03.06.2021
comment
Я проверил ваш файл logback.xml на машине, он работает. Я могу видеть журналы в файле :). Как вы создали компонент RestHighLevelClient? Я расширил класс AbstractElasticsearchConfiguration, чтобы создать bean-компонент RestHighLevelClient в соответствии с моим требованием. - person pcsutar; 03.06.2021
comment
используя конструктор `public RestHighLevelClient client() {...}` таким образом. Но мой клиент es в порядке, и он отлично работает в любых операциях. Я также вижу файл database.log. проблема в том, что в этом файле не регистрируется эластичный запрос spring-data-elasticsearch. - person user404; 03.06.2021
comment
Надеюсь, вы создали bean-компонент RestHighLevelClient. - person pcsutar; 03.06.2021
comment
да, я создал bean для этого. но не знаю, почему столкнулся с этой странной проблемой - person user404; 03.06.2021