我们有一个在Sping Boot 中编写的应用程序。我们使用Hibernate search 6从elasticsearch中获取数据。我们配置了log4j2如下:
日志4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" packages="net.xxxx.logging">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
</Console>
<Console name="ConsoleDev" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t]
%highlight{%level}{FATAL=bg_red, ERROR=red, WARN=yellow, INFO=green, DEBUG=blue} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.zaxxer.hikari" level="${env:LOG_LEVEL_HIKARI:-INFO}" additivity="false" >
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Logger>
<Logger name="org.hibernate" level="INFO" additivity="false" >
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Logger>
<Logger name="org.hibernate.search.fulltext_query" level="INFO" additivity="false" >
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Logger>
<Logger name="org.springframework" level="${env:LOG_LEVEL_SPRING:-INFO}" additivity="false" >
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Logger>
<Logger name="org.springframework.ldap" level="${env:LOG_LEVEL_LDAP:-INFO}" additivity="false" >
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Logger>
<Root level="INFO" includeLocation="false">
<AppenderRef ref="${env:LOG_CONSOLE:-Console}" />
</Root>
</Loggers>
</Configuration>
应用程序.yaml:
spring:
profiles: development
liquibase.enabled: false
jpa:
show-sql: true
properties:
hibernate:
format_sql: false
dialect: org.hibernate.dialect.SQLServer2012Dialect
generate_statistics: false
search:
enabled: true
backend:
type: elasticsearch
dynamic_mapping: true
uris: ${ELASTIC_SEARCH_URL}
aws:
region: us-west-2
signing.enabled: true
我们希望仅在调试模式下(在本地环境中)显示hibernetsql查询日志,而不在生产构建环境中显示。
我们尝试在应用程序.yaml文件中设置show_sql= false
,但它禁用了本地日志,并导致两个环境。我们希望在本地环境中启用SQL查询日志。
3条答案
按热度按时间qoefvg9y1#
您可以使用来自 Spring Boot spring profiles的
Profiles
。这是获得您所期望的最好方法。sz81bmfz2#
您可以使用Spring Profile在本地和生产环境之间进行隔离。创建两个不同的应用程序.yml文件副本,如- application-dev.yml和application-prod. yml。在application-dev.yml中,您可以使用
show_sql= true
启用休眠日志,而在另一个文件application-prod.yml中,您可以使用show_sql= false
禁用休眠日志。你必须创建一个环境变量
SPRING_PROFILES_ACTIVE
来根据你的示例选择文件。假设你的示例是开发的,那么你需要将这个变量设置为dev
,否则它将是prod
。若要切换设定档,您可以使用下列其中一个选项:
JVM属性:
-Dspring.profiles.active=dev
命令行开关:
--spring.profiles.active=dev
属性档案:
spring.profiles.active=dev
ax6ht2ek3#
最简单的方法是使用如下所示的Spring轮廓:
在您的application.yml中,您可以根据您所在的分支配置活动配置文件。如果您在dev中,它将采用application-dev的属性,如果您在application-prod的prod中,它将采用application-dev的属性
应用程序.yml
应用程序开发
应用程序生产
您甚至可以在属性中使用环境变量进行更多优化。