Spring Boot 内部所有日志记录是使用 Commons Logging 实现,同时默认配置也提供了 Java Util Logging
、Log4J
、Log4J2
、Logback
的支援。在每种情况下,已预先配置为使用控制台输出,同时提供档案输出方式。
预设情况下,如果使用Starters,则使用 Logback 进行日志记录。
日志格式
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: [/*]
{Date and Time} {Log Level} {Process ID} {---} {Thread name} {Logger name} { log message}
--- 表示日志的开始
Logback does not have a FATAL level. It is mapped to ERROR.
%logger{length}
表示如果讯息长度大於给定的 length 的值,保留最右边的单词,左边的每个单词只保留第一个字符。
日志讯息对齐与控制
模式 | 描述 |
---|---|
%50logger | 靠右对齐,最小宽度为 50,若不足 50 则左补空格,长度超出 50 则原样输出 |
%-50logger | - 表示向左对齐 |
%.20logger | 靠左对齐,最大的宽度为 20,若长度超出 20,将左边多出的字符直接移除 |
%30.50logger | 最小宽度为 30,若长度不足 30 则左补空格靠右对齐;若长度大於 30 且不足 50 则靠左对齐;若长度大於 50 则将左边多出的字符直接移除 |
application.properties
配置示例:
logging.level.root = WARN
logging.level.org.hibernate.SQL = DEBUG
如果以 logging.level.*
可以是根级别(root)也可以是 package
级别。
logging.file = logs/logfile.log
logging.path = logs # 指定日志档案输出的目录
透过 logging.pattern.console
可以指定日志输出的格式,设置如下:
logging.pattern.console="%date{yyyy-MM-dd HH:mm:ss} -%5level [%15.15thread] %-40.40logger{39} : %msg%n"
日志参数
参数 | 描述 |
---|---|
%logger | 所在 Class 的全名 |
%date | 定义日志输出的时间格式 |
%msg | 错误的讯息 |
%level | 日志等级 |
%thread | 产生日志的执行续名称 |
%n | 换行 |
这边利用了 lombok 中的 @Log4j2 注解进行 Log 设置
@GetMapping("/showNewEmployeeForm")
public String showNewEmployeeForm(Model model) {
Employee employee = new Employee();
model.addAttribute("employee", employee);
log.info("[showNewEmployeeForm] employee: {}", employee); # 可以像这样的使用,`{}` 对应 employee 参数
return "new_employee";
}
一天一篇,用力地挤出我的内容,下班後要来一篇文章真的好累QQ
明天会来个 Logback 配置,定义 log 输出讯息,以及之後如何整合至 EFK 中~
>>: 新新新手阅读 Angular 文件 - Interpolation(2) - Day14
嵌入式系统其实在我们的生活中无所不在,嵌入式系统是嵌入式计算机系统的简称,也就是说嵌入式系统与普通计...
前言 这是一个关於 STM32G4系列 初次学习的学习清单 使用软件为 STM32CubeIDE 1...
接下来让我们开始来实际安装TiDB。 TiDB在4.0版本之後推出了Tiup这个安装工具。功能十分齐...
疫情後,公司调整部份员工仍维持远距工作,但开放员工外网连线容易让内网出现资安漏洞 如何确保员工在公...
NSIS (Nullsoft Scriptable Install System) 是一个建立安装...