Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Elasticsearch查询记录到spring数据Elasticsearch的日志文件_Spring_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Spring Logback - Fatal编程技术网 elasticsearch,spring-logback,Spring,elasticsearch,Spring Logback" /> elasticsearch,spring-logback,Spring,elasticsearch,Spring Logback" />

将Elasticsearch查询记录到spring数据Elasticsearch的日志文件

将Elasticsearch查询记录到spring数据Elasticsearch的日志文件,spring,elasticsearch,spring-logback,Spring,elasticsearch,Spring Logback,我正在尝试为我的spring boot应用程序创建多个日志文件。我已经配置了logback.xml文件。我可以在日志文件中附加hibernate spring数据查询。但是,当我试图将elasticsearch查询日志附加到由spring data elasticsearch存储库创建的日志文件中时,该文件中没有任何日志。 我在logback.xml文件中添加了以下内容: <configuration> <property name="LOG_PATTER

我正在尝试为我的spring boot应用程序创建多个日志文件。我已经配置了logback.xml文件。我可以在日志文件中附加hibernate spring数据查询。但是,当我试图将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>


但两者都不起作用。如何解决这个问题?我不想从属性文件设置它们,因为我不知道如何从
.properties
文件

另一个问题:如果我多次引用多个包的同一个日志追加器,会有问题吗?

您可以启用传输层日志记录来查看服务器实际发送和接收的内容

您可以使用以下记录器启用它:

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

我已经在本地机器上测试了此解决方案,并将其打印请求和响应记录在日志中。我使用的是RestHighLevelClient和Spring引导版本-2.2.7.0

请查看我的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>

${LOGS}/spring-data-elasticsearch.log
%d%p%C{1.}[%t]%m%n

谢谢您的帮助。我试过这个。是的,它在控制台上打印日志,但没有像我在问题中提到的那样写入日志文件。我可以保证我的logback.xml其他配置正常,因为我可以使用相同的日志appendar-
databaseLog
Hi@user404写入日志文件。我在答案中添加了logback.xml文件。如果您仍然无法将日志写入文件,请检查并告知我。您可以检查我现在添加的logback.xml文件吗?我已经在机器上测试了您的logback.xml文件的工作情况。我可以在文件()中看到日志。您是如何创建RestHighLevelClient的bean的?我已经扩展了AbstractElasticsearchConfiguration类,根据我的需求创建了一个RestHighLevelClient bean。但是我的es客户端是正常的,在任何操作中都可以正常工作。我也可以看到database.log文件。问题是,spring数据的弹性查询elasticsearch并没有记录在该文件上。
logging.level.org.springframework.data.elasticsearch.client.WIRE = trace
<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>