莫道桑榆晚,为霞尚满天。这篇文章主要讲述application.properties to application.yml相关的知识,希望能为你提供帮助。
loggin:
https://howtodoinjava.com/spring-boot/configure-logging-application-yml/
Spring Boot Logging with application.ymlBy
Lokesh Gupta
|
Filed Under:
Spring Boot
Learn
spring boot logging configuration
via
application.yml
file in simple and easy to follow instructions. In the default structure of a Spring Boot web application, you can locate the
application.yml
file under the
resources
folder.
Read More:
Spring Boot Logging with application.properties
Table of ContentsUnderstand default spring boot logging Set logging level Set logging pattern Set logging output to file Using active profiles to load environment specific logging configuration Color-coded logging output
Understand default spring boot loggingTo understand default spring boot logging, lets put logs in spring boot hello world example. Just to mention, there is no logging related configuration in
application.yml
file. If you see any configuration in downloaded application, please remove it.private
final
Logger LOGGER = LoggerFactory.getLogger( this .getClass());
@RequestMapping ( "/" )
public
String home(Map<
String, Object>
model) {
LOGGER.debug( "This is a debug message" );
LOGGER.info( "This is an info message" );
LOGGER.warn( "This is a warn message" );
LOGGER.error( "This is an error message" );
model.put( "message" ,
"HowToDoInJava Reader !!" );
return
"index" ;
} |
2017 - 03 - 02
23 : 33 : 51.318
INFO
3060
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: info log statement printed
2017 - 03 - 02
23 : 33 : 51.319
WARN
3060
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: warn log statement printed
2017 - 03 - 02
23 : 33 : 51.319
ERROR
3060
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: error log statement printed |
There is fixed default log message pattern which is configured in different base configuration files.
%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta}
%clr{---}{faint} %clr{[% 15 .15t]}{faint} %clr{%- 40 .40c{ 1 .}}{cyan}
%clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} |
- Date and Time — Millisecond precision.
- Log Level — ERROR, WARN, INFO, DEBUG or TRACE.
- Process ID.
- A — separator to distinguish the start of actual log messages.
- Thread name — Enclosed in square brackets (may be truncated for console output).
- Logger name — This is usually the source class name (often abbreviated).
- The log message
Set logging levelWhen a message is logged via a Logger it is logged with a certain log level. In the
application.yml
file, you can define log levels of Spring Boot loggers, application loggers, Hibernate loggers, Thymeleaf loggers, and more. To set the logging level for any logger, add keys starting with
logging.level
.Logging level can be one of one of
TRACE
,
DEBUG
,
INFO
,
WARN
,
ERROR
,
FATAL
,
OFF
. The root logger can be configured using
logging.level.root
.logging:
level:
root: ERROR
org.springframework.web: ERROR
com.howtodoinjava: DEBUG
org.hibernate: ERROR |
2017 - 03 - 02
23 : 57 : 14.966
DEBUG
4092
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: debug log statement printed
2017 - 03 - 02
23 : 57 : 14.967
INFO
4092
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: info log statement printed
2017 - 03 - 02
23 : 57 : 14.967
WARN
4092
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: warn log statement printed
2017 - 03 - 02
23 : 57 : 14.967
ERROR
4092
--- [nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: error log statement printed |
Set logging patternTo change the loging patterns, use
logging.pattern.console
and
logging.pattern.file
keys.logging:
pattern:
console: %d{yyyy-MM-dd HH:mm:ss} - %msg%n
file: %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{ 36 } - %msg%n |
2017 - 03 - 03
12 : 59 : 13
- This is a debug message
2017 - 03 - 03
12 : 59 : 13
- This is an info message
2017 - 03 - 03
12 : 59 : 13
- This is a warn message
2017 - 03 - 03
12 : 59 : 13
- This is an error message |
Set logging output to fileTo print the logs in file, use
logging.file
or
logging.path
key.logging:
file: /logs/application-debug.log |
2017 - 03 - 03
13 : 02 : 50.608
DEBUG
10424
--- [http-nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: This is a debug message
2017 - 03 - 03
13 : 02 : 50.608
INFO
10424
--- [http-nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: This is an info message
2017 - 03 - 03
13 : 02 : 50.608
WARN
10424
--- [http-nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: This is a warn message
2017 - 03 - 03
13 : 02 : 50.609
ERROR
10424
--- [http-nio- 8080 -exec- 1 ] c.h.app.controller.IndexController
: This is an error message |
Using active profiles to load environment specific logging configurationIt is desirable to have multiple configurations for any application – where each configuration is specific to a particular runtime environment. In spring boot, you can achieve this by creating multiple
application-{profile}.yml
files in same location as
application.yml
file.Profile specific keys always override the non-profile specific ones. If several profiles are specified, a last wins strategy applies.
If I have two environments for my application i.e.
prod
and
dev
. Then I will create two profile specific yml files.application-dev.yml
logging:
file: logs/application-debug.log
pattern:
console:
"%d %-5level %logger : %msg%n"
file:
"%d %-5level [%thread] %logger : %msg%n"
level:
org.springframework.web: ERROR
com.howtodoinjava: DEBUG
org.hibernate: ERROR |
logging:
file: logs/application-debug.log
pattern:
console:
"%d %-5level %logger : %msg%n"
file:
"%d %-5level [%thread] %logger : %msg%n"
level:
org.springframework.web: ERROR
com.howtodoinjava: INFO
org.hibernate: ERROR |
spring.profiles.active
is passed to runtime.$ java -jar -Dspring.profiles.active=prod spring-boot-demo.jar |
Color-coded logging outputIf your terminal supports ANSI, color output will be used to aid readability. You can set
spring.output.ansi.enabled
value to either
ALWAYS
,
NEVER
or
DETECT
.spring:
output:
ansi:
enabled: DETECT |
%clr
conversion word. In its simplest form the converter will color the output according to the log level.【application.properties to application.yml】FATAL and ERROR – Red
WARN – Yellow
INFO, DEBUG and TRACE – Green
Drop me your questions in comments section.
Happy Learning !!
References:
Spring Boot – How to logging
Spring boot features – Logging
推荐阅读
- Android ---------- 下拉刷新,上拉加载
- Android应用开发基本流程
- 自动代还信用卡APP软件
- this指向问题(callapplyblind),自我理解的
- Java并发(happens-before)
- appium定位toast消息的使用
- 网易云易盾中标浙报反作弊服务 助力浙江新闻App健康发展
- Android自定义圆形ProgressBar
- H5对安卓WeView开发中的影响