SpringBoot官方文檔學習(三)配置文件、日志、國際化和JSON


一、Profiles

Spring配置文件提供了一種方法來隔離應用程序配置的各個部分,並使其僅在某些環境中可用。任何@Component、@Configuration或@ConfigurationProperties都可以標記為@Profile來限制加載時間,如下面的示例所示:

@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {

    // ...

}

注:如果@ConfigurationProperties bean是通過@EnableConfigurationProperties而不是通過自動掃描注冊的,則需要在具有@EnableConfigurationProperties注釋的@Configuration類上指定@Profile注釋。在掃描@ConfigurationProperties的情況下,可以在@ConfigurationProperties類本身上指定@Profile。

你可以使用spring.profiles.active環境屬性,以指定哪些配置文件是活動的。您可以使用本章前面描述的任何方式指定屬性。例如,您可以在應用程序中包含它。屬性如下例所示:

spring.profiles.active=dev,hsqldb

我們也可以使用命令行指定:

--spring.profiles.active=dev,hsqldb

1.添加活躍的配置文件

spring.profiles.active屬性遵循其它屬性的一樣順序規則:最高的屬性來源獲勝。 簡言之,依據學習(二)中提到的,不同的外面文件加載順序是不一樣的,相同的配置屬性時,優先級高的值替換優先級低的。換句話說,我們可以通過命令行的配置來替換項目中加載的application.properties配置。

有時,將profil-specific文件的屬性添加到活動profiles文件而不是替換它們是很有用的。spring.profiles.include屬性可用於無條件地添加活動配置文件。SpringApplication入口點還有一個用於設置額外概要文件的Java API(也就是說,優先於spring.profiles.active屬性))。參見SpringApplication中的setAdditionalProfiles()方法。

例如,當應用以--spring.profiles.active=prod命令行啟動時,proddb和prodmq文件都是被激活的。

---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodmq

2.以編程方式設置配置文件

兩種:

第一種:在應用啟動前,調用SpringApplication.setAdditionalProfiles(…​)。

例(指定活躍文件):

a.在代碼中顯示增加SpringApplication .setAdditionalProfiles("dev");
b.運行Application.java文件啟動,則增加參數System.setProperty("spring.profiles.active", "dev");、
c.命令行直接運行jar文件,則使用java -jar -Dspring.profiles.active=dev demo-0.0.1-SNAPSHOT.jar

第二種:使用spring的ConfigurableEnvironment接口。

 

 詳細可參考文檔:https://blog.csdn.net/mayongzhan_csdn/article/details/86647983

3.Profile配置文件

在application.properties(application.yml)和引用的文件中的profile都是通過@ConfigurationProperties來找到文件並加載的。

二、日志

 Springboot提供了Java Util Logging 、Log4j2和Logback。

 如果使用“Starters”,默認使用Logback。

注:

1.Java有許多可用的日志記錄框架。如果上面的列表看起來令人困惑,請不要擔心。通常,您不需要更改日志記錄依賴項,並且Spring Boot默認值可以正常工作。

2.將應用程序部署到servlet容器或應用程序服務器時,通過Java Util Logging API執行的日志記錄不會路由到應用程序的日志中。這樣可以防止由容器或已部署到容器中的其他應用程序執行的日志記錄出現在應用程序的日志中。

1.日志格式

2019-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

Log Level: ERRORWARNINFODEBUG, or TRACE.

注:Logback does not have a FATAL level. It is mapped to ERROR

2.控制台輸出

默認輸出到控制台的級別:ERROR,WARN,INFO.

如果要打印debug級別,java -jar myapp.jar --debug

注:我們也可以在application.properties中指定debug=true。

2.1有色條標志輸出

如果終端支持ANSI,則可以使用彩色輸出來提高可讀性。可以設置spring.output.ansi.enabled為支持的值來覆蓋自動檢測。AnsiOutput.Enabled的值可為:ALWAYS DETECT  NEVER

通過使用%clr轉換字來配置顏色編碼。根據對級別輸出着色:%clr(%5p)

日志級別到顏色的映射:FATAL ERROR  紅色    WARN  黃色  INFO  DEBUG  TRACE 綠色

也可以通過將需要轉換的選項指定使用顏色和樣式。例如文本變黃,使用以下:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

支持以下顏色和樣式:blue、cyan、faint、green、magenta、red、yellow。

3.文件輸出

默認情況下,Spring Boot僅記錄到控制台,不寫日志文件。如果除了控制台輸出外還想寫日志文件,則需要設置一個logging.file.namelogging.file.path屬性(例如,在application.properties)。

logging.file.name logging.file.path Example Description

(none)

(none)

 

Console only logging.

Specific file

(none)

my.log

Writes to the specified log file. Names can be an exact location or relative to the current directory.

(none)

Specific directory

/var/log

Writes spring.log to the specified directory. Names can be an exact location or relative to the current directory.

當文件達到10MB時,日志將從頭開始重新寫入。

可以使用該logging.file.max-size屬性更改文件大小限制

日志檔案的總大小可以使用設置上限logging.file.total-size-cap當日志歸檔的總大小超過該閾值時,將刪除備份。要在應用程序啟動時強制清除日志存檔,請使用logging.file.clean-history-on-start屬性。

4.日志級別

可以在Environment(例如:application.properties)設置logging.level.<logger-name>=<level>,其中level可以為:TRACE,DEBUG,INFO,WARN,ERROR,FATAL或OFF之一。

例如:

logging.level.root=warn
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error

5.日志組

Spring Boot允許您在Spring中定義日志記錄組Environment例如,這是通過將“ tomcat”組添加到您的方式來定義它的方法application.properties

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

定義后,您可以使用一行更改該組中所有記錄器的級別:

logging.level.tomcat=TRACE

Spring Boot包含以下預定義的日志記錄組,它們可以直接使用:

Name Loggers

web

org.springframework.core.codecorg.springframework.httporg.springframework.weborg.springframework.boot.actuate.endpoint.weborg.springframework.boot.web.servlet.ServletContextInitializerBeans

sql

org.springframework.jdbc.coreorg.hibernate.SQLorg.jooq.tools.LoggerListener

6.自定義日志配置

可以將自定的日志文件放在類路徑的根目錄或者在配置文件中通過logging.config進行制定位置。

可以通過使用org.springframework.boot.logging.LoggingSystemsystem屬性來強制Spring Boot使用特定的日志系統該值應該是實現的完全限定的類名LoggingSystem您還可以通過使用值完全禁用Spring Boot的日志記錄配置none

注:由於日志記錄是ApplicationContext創建之前初始化,因此無法從@PropertySourcesSpring @Configuration文件中控制日志記錄更改日志記錄系統或完全禁用它的唯一方法是通過系統屬性。

依據日志系統,下面的日志配置文件將會被加載:

Logging System Customization

Logback

logback-spring.xmllogback-spring.groovylogback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

注:如果可能,我們建議您在日志配置中使用-spring變體(例如,使用logback-spring.xml而不是logback.xml)。如果使用標准配置位置,Spring無法完全控制日志初始化。

為了幫助進行定制,一些其他屬性從Spring環境轉移到系統屬性,如下表所示:

Spring Environment System Property Comments

logging.exception-conversion-word

LOG_EXCEPTION_CONVERSION_WORD

The conversion word used when logging exceptions.

logging.file.clean-history-on-start

LOG_FILE_CLEAN_HISTORY_ON_START

Whether to clean the archive log files on startup (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.name

LOG_FILE

If defined, it is used in the default log configuration.

logging.file.max-size

LOG_FILE_MAX_SIZE

Maximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.max-history

LOG_FILE_MAX_HISTORY

Maximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.path

LOG_PATH

If defined, it is used in the default log configuration.

logging.file.total-size-cap

LOG_FILE_TOTAL_SIZE_CAP

Total size of log backups to be kept (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.pattern.console

CONSOLE_LOG_PATTERN

The log pattern to use on the console (stdout). (Only supported with the default Logback setup.)

logging.pattern.dateformat

LOG_DATEFORMAT_PATTERN

Appender pattern for log date format. (Only supported with the default Logback setup.)

logging.pattern.file

FILE_LOG_PATTERN

The log pattern to use in a file (if LOG_FILE is enabled). (Only supported with the default Logback setup.)

logging.pattern.level

LOG_LEVEL_PATTERN

The format to use when rendering the log level (default %5p). (Only supported with the default Logback setup.)

logging.pattern.rolling-file-name

ROLLING_FILE_NAME_PATTERN

Pattern for rolled-over log file names (default ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz). (Only supported with the default Logback setup.)

PID

PID

The current process ID (discovered if possible and when not already defined as an OS environment variable).

 

三、國際化

Spring Boot支持本地化消息,因此您的應用程序可以滿足不同語言首選項的用戶。默認情況下,Spring Boot會在類路徑的根目錄下查找消息資源包的存在。

可以使用spring.message 命名空間來配置資源包的basename和其他幾個屬性,如下例所示:

spring.messages.basename=messages,config.i18n.messages
spring.messages.fallback-to-system-locale=false

spring.messages.basename支持以逗號分隔的位置列表,包括包限定符或從類路徑根解析的資源。

四、JSON

Spring Boot提供了與三個JSON映射庫的集成:Gson、Jackson和JSON-B。

Jackson是首選和默認的庫。

1.Jackson

提供了Jackson的自動配置,Jackson是spring-boot-starter-json的一部分。當Jackson位於類路徑上時,將自動配置ObjectMapper bean。為自定義ObjectMapper的配置提供了幾個配置屬性。

2.Gson

提供了Gson的自動配置。當Gson位於類路徑上時,將自動配置Gson bean。幾個spring.gson.*配置屬性用於自定義配置。為了獲得更多的控制,可以使用一個或多個GsonBuilderCustomizer bean。

3.JSON-B

提供了JSON-B的自動配置。當JSON-B API和實現位於類路徑上時,將自動配置Jsonb bean。首選的JSON-B實現是Apache Johnzon,為其提供了依賴項管理。

 以使用Gson為例:https://www.jianshu.com/p/0b1f376bce5b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM