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